PHPプログラムで、mb_convert_kana($q1, "Krn","Shift_JIS")とし、半角カタカナを全角に、その他を半角に直す処理をしているのですが、アアなどの半角を連続させると文字化けしてしまいます。

この対策はご存知ありませんでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/05/21 13:11:34
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:tadashi0805 No.1

回答回数287ベストアンサー獲得回数29

ポイント27pt

シフトJISで半角カナ"アア"とさせると、その文字は、EUC文字コードと見ても意味のある2バイトコードになります。なので、文字列の文字コードを自動判定させると、優先の文字コードが何か次第で誤った文字コード選択がされる場合があります。

処理の前後や、mb_stringモジュールの変数設定、PHPプログラムファイル自体の文字コード等など、色々絡む要素はありますが。

mb_internal_encoding()を使って、明示的に内部文字コードをシフトJISに設定するのはどうでしょう。

http://www.res-system.com/item/478

id:wizemperor No.2

回答回数379ベストアンサー獲得回数52

ポイント27pt

http://2php.jp/php/mb_convert_kana.html

PHP-user MLでの質問

http://ns1.php.gr.jp/pipermail/php-users/2003-September/018600.h...

とその回答

http://ns1.php.gr.jp/pipermail/php-users/2003-September/018604.h...

これらのページが参考になるかと思います。

変換時ではなく、表示する際に文字化けが発生している可能性もあります。

その場合には出力する際に、


header ("Content-Type: text/html; charset=Shift_JIS");


とHTTPヘッダを送出してやると直るはずです。

またHTML内で表示している場合には、HTMLの<head>要素内でも

<meta http-equiv="content-type" content="text/html; charset=Shift_JIS" />

と指定してやると上手くいくと思います。

その他、PHP内でマルチバイトに対応していない関数で$q1を変換等をしていないか確認してみてください。

id:sera_yr No.3

回答回数123ベストアンサー獲得回数6

ポイント26pt

http://sb.xrea.com/archive/index.php/t-8602.html

こちらを参考にされてはいかがでしょうか

id:makocan

どの方法も上手くいきませんでした。

確認したところ、一部の半角カタカナは、$_POSTから取得した瞬間に文字化けしているようです。。。

2006/05/19 21:45:08

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません