![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
「テスト」を以下でデコードすると「繝・せ繝・」となってしまいます。
URL
test.cgi/q_テスト/
$ENV{'PATH_INFO'}と「q_テスト」を使うことを前提として、「テスト」と正常に取る方法はありますでしょうか。
ご教授お願いします。
$buffer = $ENV{'PATH_INFO'};
$buffer = substr($buffer,1);
@lens = split(/\//,$buffer);
foreach $len(@lens){
($name, $value) = split(/_/,$len,2);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value,'sjis');
$value =~ s/\t/ /g;
$value =~ s/\n//g;
$FORM{$name} = $value;
}
No.3ベストアンサー
- 回答日時:
>実はURLエンコードしているのですが、
>そのURLをメールで送った場合、
>それをクリックするとアドレスが自動的に
>日本語になってしまうため、
>このような問題が起こっています。
これを回避したいのであれば、ブラウザの知らない独自の変換方法を使用すれば大丈夫な気がします。
s/(.)/sprintf("%02.x",ord($1))/eg;
送るときこんな感じに変換して、
s/(..)/pack("C", hex($1))/eg;
受け取るときこんな感じにすれば問題ないのでは?
この方法ならブラウザが勝手に文字コードを変換することもないだろうから、受け取るときに文字コードをきめうちにできるし。
(文字コードの誤認がない)
No.2
- 回答日時:
> 「テスト」を以下でデコードすると「繝・せ繝・」となってしまいます。
ということは、「テスト」は「UTF-8」にエンコードされているということです。しかし、jcode.pl は UTF-8 に対応していないので、変わりに Jcode.pm か Encode.pm を使う必要があります。
もし、Perl のバージョンが 5.8.0 以上なら、標準モジュールの Encode.pm が使えます。それより前のバージョンなら、Jcode.pm を使ってください。
Jcode.pm についてはこちらを参照してください。
# Jcode.pm 作者のページ
http://openlab.ring.gr.jp/Jcode/index-j.html
# Jcode.pm の日本語ドキュメント
http://perldoc.jp/docs/modules/Jcode-0.82/Jcode. …
Encode.pm についてはこちら。
# Encode - 文字コードの変換
http://search.cpan.org/~dankogai/Encode-1.99/Enc …
# Encode::Guess - 文字コードの調査
http://search.cpan.org/~dankogai/Encode-1.99/lib …
Encode を利用した例
・スクリプトの先頭に下記を追加
use Encode qw/from_to/;
use Encode::Guess qw/shiftjis euc-jp 7bit-jis utf8/;
・質問のコードの一部を変更
&jcode'convert(*value,'sjis');
↓
my $enc = guess_encoding($value);
if (ref $enc) {
from_to($value, $enc->name, 'shiftjis');
}
※スクリプトの字下げに全角空白を使っているので、コピーする場合はタブなどに変換してください。
# Jcode は使ったことがないのでサンプルは書けませんが、ほとんど jcode.pl と同じ感覚で使えるようです。
参考URL:http://openlab.ring.gr.jp/Jcode/index-j.html,http://search.cpan.org/~dankogai/Encode-1.99/Enc …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlの日本語文字コードはどう...
-
javaでエンコードがうまくいかない
-
CSVファイルの中で、「 , 」カ...
-
住宅にカナを入力する際に丁目...
-
英数字のみ全角から半角に変換
-
CSVの定義
-
マクロを使ってフォルダー内に...
-
EXCELからCSVにすると余計なカ...
-
csvデータ ダブルクォーテ...
-
エクセルで数値を全角文字(カ...
-
文字コードの%E3%80%とは何です...
-
Malformed UTF-8 character
-
InputMan の imTextについて
-
PHP カンマをエスケープしたい...
-
VBA 置換文字がみつからない時
-
全角スペースを削除するには?
-
大文字と全角文字は同じ意味で...
-
COBOLでの全角文字の判定をした...
-
ACCESSの表で罫線を使うと縦方...
-
角カッコが含まれてるかどうか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IMAP4でsubjectが検索ヒットしない
-
CASLIIの数値データ入出力
-
pythonエラー
-
BASP21によるbase64のデコード...
-
「繝・せ繝・」となる文字化け
-
jisコードで16進数の『3c』か...
-
URLエンコードされたデータを戻...
-
1つのサイトで文字コードが混在...
-
perlの日本語文字コードはどう...
-
Encodeモジュールで日本語化したい
-
Lite.pmを使ったメールで文字化け
-
Perlでのメール本文の解析について
-
Cookie変数の命名について
-
Perl:ファイル名だけ文字化けする
-
MIMEでエンコードされたMailのS...
-
javaでエンコードがうまくいかない
-
Perl 文字化け
-
メール(iso-2022-jp-2)のデコ...
-
index関数で日本語を使用する場...
-
メールを文字化けしないように...
おすすめ情報