※ ChatGPTを利用し、要約された質問です(原文:HTTP::Request::Common qw(POST);時にソフト表だとエラーになる)
HTTP::Request::Common qw(POST);でソフト表がエラーになる
このQ&Aのポイント
HTTP::Request::Common qw(POST);を使ってPOSTする際、日本語のデータは正常に渡るが、'ソフト表'という文字列を送るとエラーになる。
記述はShift_JISで行っており、他の日本語文字列は問題なく送れることから、問題は文字列自体にある。
エラーの詳細や解決策について、先生方のご教授をお願いしたい。
HTTP::Request::Common qw(POST);時にソフト表だとエラーになる
お世話になります。
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;
補足
ご教授頂き有難うございます。 ¥で文字化けを防ぐ考えでよかったんですね。¥ソ¥表としていました^^; 後、この方法ですと、keyに対するvalue値を設定する都度、文字化けするかどうかを動作時にチェックし、エラーの際には同じ作業が必要になってくるかと思うのですが、組み込みモジュールやjcode.pl等を使って、簡単に防ぐ方法などはございませんでしょうか。