![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
「テスト」を以下でデコードすると「繝・せ繝・」となってしまいます。
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Encodeについて
-
CSVファイルの中で、「 , 」カ...
-
英数字のみ全角から半角に変換
-
「何とかで始まり、何とかで終...
-
EXCELからCSVにすると余計なカ...
-
マクロを使ってフォルダー内に...
-
エクセルで数値を全角文字(カ...
-
プログラミングでは、半角括弧...
-
Excel VBAでPDFファイルをMicro...
-
COBOL・全角判定
-
Malformed UTF-8 character
-
CString から LPCTSTRの型に変換
-
CSVの定義
-
住宅にカナを入力する際に丁目...
-
各項目がダブルクォーテーショ...
-
カンマ区切りの数字をCSVフ...
-
VBA 文字に半角が含まれて...
-
エクセルにMicrosoft Barcode C...
-
データにカンマが入ったCSVデー...
-
正規表現で、特定の文字列を含...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pythonエラー
-
「繝・せ繝・」となる文字化け
-
Perl:ファイル名だけ文字化けする
-
1つのサイトで文字コードが混在...
-
Perlでのメール本文の解析について
-
メール(iso-2022-jp-2)のデコ...
-
IMAP4でsubjectが検索ヒットしない
-
BASP21によるbase64のデコード...
-
標準入力からのutf-8→euc-jpで...
-
jcode.pmでconvertできない
-
テキストファイルから日本語部...
-
文字コードの変換
-
jcode.plとはどんなものですか
-
quoted-printableのアルゴリズム
-
検索キーワードのデコードについて
-
Perl 文字化け
-
CGIでメールを送る際に文字...
-
httpリクエストのbody部分について
-
文字コードを指定する際sjisな...
-
CSVファイルの中で、「 , 」カ...
おすすめ情報