• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:POSTしたデータの文字コードがutf-8になる)

POSTデータの文字コードがutf-8になる方法について

このQ&Aのポイント
  • POSTデータの文字コードをutf-8にする方法について教えてください。
  • HTMLのヘッダーで文字コードをSJISに指定しても、サーバ側で受け取ったデータはutf-8のままです。
  • 文字化けを防ぐ方法を教えてください。

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

HTML本体の文字コード・・と言うのは遠い昔の--20年位前(^^)のお話で、HTML4.01(1999年)以降は <form action="[URI]" method="post|get" accept-charset="文字符号化方法のリスト"> →accept-charset ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/interact/forms.html#adef-accept-charset ) ですから、本文の記述に関わらず、エンコードは指定できます。 accept-charset="UTF-8" accept-charset="iso-2022-jp,UTF-8,EUC-JP,Shift_JIS" とブラウザが可能なエンコードを順次テストできるようリストを書いておくことも行われます。  しかし、現実にはブラウザは様々で、携帯電話などは指定に関わらずShift_JISで送信したり、本文の文字コードに従うブラウザも実在しますから、データを受け取ったサーバー側で文字コードを判別して適切にエンコードする必要があります。  PerlにしろPHPにしろ、文字コード判別のモジュールは利用できますから、問題ないでしょう。 ASCII JIS > UTF-8 > EUC-JP > SJIS ( http://www-ise3.ist.osaka-u.ac.jp/miura/?PHP%20GET%2FPOST%A5%E1%A5%BD%A5%C3%A5%C9%A4%C7%A4%CE%C6%FC%CB%DC%B8%EC%A4%CE%CA%B8%BB%FA%B2%BD%A4%B1%CB%C9%BB%DF ) ページの文字コードとは違う任意の文字コードをformから送信する方法|web bibo ( http://www.webbibo.com/blog/htmlcss/accept-charset.html ) とか・・  

その他の回答 (1)

回答No.1

こんにちわ 試しに、Chromeから、perlで受け取ってみたら あああ=「a=%82%A0%82%A0%82%A0」 として、受け取れました。 参考 http://charset.7jp.net/sjis.html これで、試すと、どうでしょうかね? <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>testpage</title> </head> <body> <form method="POST" action="test.cgi"> <textarea name="a"> </textarea> <input type="submit"> </form> </body> </html> 以下、perl #!/usr/bin/perl print <<EOM; Content-type: text/html EOM while(<STDIN>) { print $_; } ただ、ガラケーで、がんばってUTF-8を指定したにも関わらず、 POSTなら大丈夫だったのですが、GETにしたら、勝手にShift-JISに されてしまうことは、ありましたね。