
「テスト」を以下でデコードすると「繝・せ繝・」となってしまいます。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Strawberry Perl for Windows ...
-
INDIRECT 横に再度抽出したい
-
Perlのエラーについてご教授く...
-
bashスクリプト
-
perlで2次元配列をサブルーチ...
-
Perlの全角スペース 文字化け?
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pythonエラー
-
文字コードについて
-
BASP21によるbase64のデコード...
-
jisコードで16進数の『3c』か...
-
メール(iso-2022-jp-2)のデコ...
-
quoted-printableのアルゴリズム
-
IMAP4でsubjectが検索ヒットしない
-
CASLIIの数値データ入出力
-
標準入力からのutf-8→euc-jpで...
-
Perl:ファイル名だけ文字化けする
-
文字コード? 推奨UTF-8?
-
エンコード方法についての質問
-
Jcodeモジュールの代わりにjcod...
-
1つのサイトで文字コードが混在...
-
メールを文字化けしないように...
-
「繝・せ繝・」となる文字化け
-
Lite.pmを使ったメールで文字化け
-
MIMEでエンコードされたMailのS...
-
perlの日本語文字コードはどう...
-
Encodeモジュールで日本語化したい
おすすめ情報