use utf8;
binmode(STDIN,":encoding(shiftjis)");
をすると、入力時に内部変換がかかり、UTF-8として扱える
という認識で使っていたのですが、下記のコードを実行してみると
入力した文字は普通に sjisで表示されます。
binmode(STDIN~
はどのような意味を持つのでしょうか。
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl …
http://www.hikoboshi.org/perl/doc/encode.html
他、いろいろなサイトで調べてみたのですが、いまひとつ
納得する回答を得ることができません。
////////////////////////////////////////////////////
use utf8;
use open 'encoding(utf8)';
binmode(STDIN,":encoding(shiftjis)");
use CGI;
print "content-type:text/html; charset=Shift_JIS \n\n";
print <<"EOM";
<form action="xxx.cgi">
<input type="text" name="hoe">
<input type="submit">
</form>
ここは UTF-8文字列なので化ける<br>
EOM
$cgi = CGI->new;
print $cgi->param('hoe');
////////////////////////////////////////////////////
現在は下記のコードで自前で UTF-8に変換しています
////////////////////////////////////////////////////
foreach( $cgi->param() ){
my $str = $cgi->param($_);
$str = Encode::encode('utf-8', Encode::decode('shiftjis', $str));
$cgi->param( -name=>$_, -value=>$str );
}
No.1ベストアンサー
- 回答日時:
このソースで問題なのはbinmodeではなくuse open...の箇所です。
use open 'encoding(utf8)'; は、入出力をUTF-8とするプラグマですが、
これはこの後から開くファイルハンドルに有効です。
すなわちこの時点で既に開かれているSTDIN,STDOUT,STDERRはUTF-8にならず、
プラットフォームデフォルトのエンコードのままになります(この場合はShift-JIS)。
標準入力/出力/エラーの3つをUTF-8エンコードにバインドしたい場合は、use openの後で
use open ":std";
と記述すれば大丈夫です。
この後でbinmodeしても、STDINはちゃんとShift-JISとして扱われます。
参考URL:http://www.pure.ne.jp/~learner/program/Perl_unic …
ありがとうございます。
読みつついろいろ実験してみたのですが、どうも自分が
求めているのとは違うものみたいでした。^^;
標準入力のSJISを勝手にUTF-8に変換してくれるのかとか、
そんなようなものを期待していたのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INDIRECT 横に再度抽出したい
-
テキストファイルで提出とは?
-
C言語の問題について
-
[perl] perlで書き込み中に、PC...
-
perlで2次元配列をサブルーチ...
-
Wallpaper Engineでおすすめの...
-
openした後、closeしないでプロ...
-
awk ファイル出力
-
Perl 掲示板 並び替えについて
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
Perlで時間の計算
-
perlについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル出力をUTF8Nではなくて...
-
Perl cgiの文字化けを直したい ...
-
perlをwindows環境でshift-jis...
-
[Perl]Shift-JISのXMLを解析する場
-
Perl utf8上でshiftjisをデコード
-
(Perl)UTF-8で別ファイルに書き...
-
utf8使用時のフォーム入力文字...
-
Data::Dumper;でダンプ後表示し...
-
perlのLWP::Simpleでgrepの値が...
-
perlのmysqlで文字化けをする、...
-
does not map to shiftjis は解...
-
vimでのutf8の取扱について
-
HTTP::Request::Common qw(POST...
-
文字を一文字ずつ区切りたい
-
Perl UTF8で出力
-
じゃらんのAPIでRESTで取得した...
-
perlでuse utf8でsjisのファイ...
-
VBAでCSVファイルを途中行まで...
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
おすすめ情報