お世話になります。
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;
No.1ベストアンサー
- 回答日時:
Can't find string terminator '"' anywhere before EOF at perltest.txt line 2.
のエラーでよろしいですか? これはHTTP::Requestとは全く関係のない問題です。'表'をShift_JISで表した時の2バイト目が¥のため、クォート記号をエスケープして打ち消してしまっています。そのため、ダブルクォートが閉じられていないというエラーが出ています。
bbb => "ソフト表¥"
としてください。(¥は半角です)
この回答への補足
ご教授頂き有難うございます。
¥で文字化けを防ぐ考えでよかったんですね。¥ソ¥表としていました^^;
後、この方法ですと、keyに対するvalue値を設定する都度、文字化けするかどうかを動作時にチェックし、エラーの際には同じ作業が必要になってくるかと思うのですが、組み込みモジュールやjcode.pl等を使って、簡単に防ぐ方法などはございませんでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- 英語 Abstract Mucograft is collagen matrix was designed 1 2022/11/05 22:35
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- 英語 The Twilight Zone1959に関するCBSの回答について 1 2023/03/02 15:13
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl cgiの文字化けを直したい ...
-
ファイル出力をUTF8Nではなくて...
-
HTTP::Request::Common qw(POST...
-
fopenでディレクトリ内の全ファ...
-
バッチファイルの作り方(CSV→...
-
ReadLineでの読み出し行を指定する
-
awkスクリプトでダブルクォーテ...
-
教えて!perlから.exeファイル...
-
MySQLに画像を格納してperlで取...
-
パスから最後のディレクトリだ...
-
ExcelをCSV書き出す場合のシー...
-
DOSコマンドで、標準出力を出力...
-
dos変数の%~dp0は powershellで...
-
perlを用いた特定文字列間の抽...
-
複数ファイルの読み込みについて
-
perlでの三次元配列の作り方
-
Perlの変数に文字数制限(容量...
-
改行コードが勝手に
-
VBA テキストファイルを読み取...
-
VBAで巨大なファイルの途中から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル出力をUTF8Nではなくて...
-
Perl cgiの文字化けを直したい ...
-
perlをwindows環境でshift-jis...
-
[Perl]Shift-JISのXMLを解析する場
-
Perl utf8上でshiftjisをデコード
-
utf8使用時のフォーム入力文字...
-
Data::Dumper;でダンプ後表示し...
-
(Perl)UTF-8で別ファイルに書き...
-
perlのmysqlで文字化けをする、...
-
Perl UTF8で出力
-
perlのLWP::Simpleでgrepの値が...
-
HTTP::Request::Common qw(POST...
-
vimでのutf8の取扱について
-
文字を一文字ずつ区切りたい
-
does not map to shiftjis は解...
-
じゃらんのAPIでRESTで取得した...
-
perlでuse utf8でsjisのファイ...
-
VBAでCSVファイルを途中行まで...
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
おすすめ情報