トップページphp
1001コメント233KB

Perlコーディング初心者質問スレ Part 64

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/07/31(火) 02:13:45.37ID:T8o4qE13
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

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:???
$val= uri_unescape( $val );

と、すると
「野外」 が 「\x{0096}\x{00ec}\x{008a}O」 と表示されます

Googleで色々調べたんですが原因がさっぱりわからず
jcode.plやjcode.pmはもう使わないと書かれていますし
どうしたら良いのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています