Perlコーディング初心者質問スレ Part 64
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/07/31(火) 02:13:45.37ID:T8o4qE13【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2 以降
前スレ http://kohada.2ch.net/test/read.cgi/php/1315559509/
0390nobodyさん
2012/11/15(木) 16:49:11.21ID:???GETで得たURLエンコードがどうにもこうにも文字化けしたままなのです
環境はActivePerl 5.14.2 Build 1402 (64-bit)
ちょっとわけあってshiftjisで書いてます
ファイルの頭で文字コードを指定しています
use encoding "shiftjis";
binmode STDERR, ":encoding(shiftjis)";
送る側は
<form action="main.pl" method="get">
<input type="checkbox" name="tag" value="$xx">$xx ←日本語で数回分
<input type="submit" value="送信">
</form>
受ける側も同じファイルです
POSTかGETか判別して $alldata に入れた後
foreach my $tmp(split(/&/,$alldata))
{
print $tmp;
print "<BR>";
(my $key,my $val)=split(/=/,$tmp);
ここまではいいんですが
$val=~ tr/+/ /;
$val=~ s/%(..)/pack('H2', $1)/ge;
と、すると
「野外」 と入れたものが 「\x{fffd}O」 と表示され
0391nobodyさん
2012/11/15(木) 16:52:11.64ID:???と、すると
「野外」 が 「\x{0096}\x{00ec}\x{008a}O」 と表示されます
Googleで色々調べたんですが原因がさっぱりわからず
jcode.plやjcode.pmはもう使わないと書かれていますし
どうしたら良いのでしょうか?
0392nobodyさん
2012/11/15(木) 17:57:14.50ID:???encodingモジュールを除外したらエラーは発生しなくなったけどそれで解決かはわからない
(恥ずかしながら自分もencodingモジュールよくわからないのでw)
ただ、今回の問題とは関係ないけど、今時入力をsplit使って手で処理するのは非常に危険だ、とは言っておきます
素直にCGI.pmを使うことを覚えましょう
あと、このスレには変な荒らしが常駐してるけど無視でおk
■ このスレッドは過去ログ倉庫に格納されています