アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
HTTP::Request::Common qw(POST);を使ってPOSTする際、aaa=> 'あいう',などの日本語はPOST後、データが渡っている事が確認できるのですが、'ソフト表'等の文字列をあえて送ろうとすると、エラーになってしまいます。
記述はShift_JISで行っています。
先生方、ご教授ねがえませんでしょうか。
#!/usr/bin/perl

BEGIN{
$| = 1;
print "Content-type: text/html\n\n";
open(STDERR, ">&STDOUT");
}

use HTTP::Request::Common qw(POST);
use LWP::UserAgent;

#use open IN => ":utf8"; # 入力をUTF8とする
#use open OUT => ":shiftjis";
#use open ":std";
#use Encode;
use encoding 'shiftjis', STDIN=>'utf8', STDOUT=>'shiftjis';
#binmode STDOUT, ":encoding(utf-8)";
#binmode STDOUT, ":encoding(shiftjis)";
#use open ":encoding(shiftjis)";
#require './jcode.pl';
my $ua = LWP::UserAgent->new;
#タイムアウトを設定
$ua->timeout(10);

my $req1 = POST 'http://domain.com/test.cgi',
[
aaa => 'www1',
bbb => "ソフト表" ,#bbb=> 'あいう',だとエラーになりません
];

print $ua->request($req1)->as_string;

A 回答 (1件)

Can't find string terminator '"' anywhere before EOF at perltest.txt line 2.



のエラーでよろしいですか? これはHTTP::Requestとは全く関係のない問題です。'表'をShift_JISで表した時の2バイト目が¥のため、クォート記号をエスケープして打ち消してしまっています。そのため、ダブルクォートが閉じられていないというエラーが出ています。

bbb => "ソフト表¥"

としてください。(¥は半角です)

この回答への補足

ご教授頂き有難うございます。

¥で文字化けを防ぐ考えでよかったんですね。¥ソ¥表としていました^^;

後、この方法ですと、keyに対するvalue値を設定する都度、文字化けするかどうかを動作時にチェックし、エラーの際には同じ作業が必要になってくるかと思うのですが、組み込みモジュールやjcode.pl等を使って、簡単に防ぐ方法などはございませんでしょうか。

補足日時:2006/04/23 04:33
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!