• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:utf8使用時のフォーム入力文字コード)

utf8使用時のフォーム入力文字コードについて

このQ&Aのポイント
  • utf8使用時のフォーム入力文字コードについての調査結果をまとめました。
  • binmode(STDIN,":encoding(shiftjis)"というコードは、入力時に内部変換を行い、UTF-8として扱えるようにするためのものです。
  • 現在は自前でUTF-8に変換するコードを使用しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答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_unicode.html#perlio
dany
質問者

お礼

ありがとうございます。 読みつついろいろ実験してみたのですが、どうも自分が 求めているのとは違うものみたいでした。^^; 標準入力のSJISを勝手にUTF-8に変換してくれるのかとか、 そんなようなものを期待していたのですが。

関連するQ&A