アプリ版:「スタンプのみでお礼する」機能のリリースについて

Webフォームから取得したデータに半角カナが含まれていた場合の文字化け対策として、Jcode.pmを使用して、下記のようにEUCに変換しています。

use Jcode;
$euc_string = jcode($form_input)->h2z->euc;

原理的には間違ってはいない筈ですが、ほとんどの場合、$form_inputの文字コードの判別に失敗(恐らく半角カナをEUCと誤認)し、文字化けしてしまいます。誤認しないように、下記の様に記述すれば、正しく全角カナに変換してくれます。

use Jcode;
$euc_string = jcode($form_input,"sjis")->h2z->euc;

ただ、入力コードがシフトJISとは限りませんので、この記述は好ましくないと思っています。

半角カナの文字化けは、webフォームを作られた方なら皆さん経験されていると思うのですが、どうされているのでしょうか?
Jcode.pmの文字コード判別は、半角カナが混じっていた場合、かなり長い文字列でないと判別に失敗するようなので、フォームで短い文字列(名前等)を入力させて処理させた場合、ほとんど上手く動かないようなのですが?

A 回答 (1件)

私は、bkoさんのあげられているような、入力文字列を"SJIS"と決めうちする方法を取っています。

ほとんどのブラウザでは、SJISでフォームを出力した場合にはSJISで日本語をエスケープして送信してくるからです。実際、SJISのフォームに対してeucで送信してくるブラウザは、最近のブラウザでは見たことがありません。
(昔は平気でeucで返してきましたけど:-))

sjisの半角カナはeucとかぶる領域に存在しますので、これを識別するには日本語として正しいのか、までを意識する必要があり、めんどうな実装となると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
昔はクライアントのOSが使用しているコードを返してくるブラウザがあったのですが、確かに、最近はSJISで返って来ている気はしていたのですが。
なにせ、Windowsを使用している人が大部分でOSが使用しているコードを返してきているとしても大部分SJISが返ってきてしまうので、自信がなかったのです。
実際にお使いになってる方がいれば、ちょっと自信をもって使えます。ありがとうございました。

お礼日時:2005/09/10 09:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!