「文字化け」の編集履歴(バックアップ)一覧はこちら
文字化け - (2006/03/08 (水) 13:10:22) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*文字化け
**ページ全体が化ける
原因
-charsetが未定義。
-文字コードの指定が誤っている為。
-ブラウザが正しく文字コードを判断できなかった為。
対応
-作成者の場合は<META HTTP-EQUIV="Content-Type" Content="text/html; charset=使用言語の指定">の使用言語の指定と書かれた部分に、言語を記述する。
-閲覧者はブラウザの文字コードを手動で変更する。
文字コードの指定
|シフトJIS|Shift_JIS|
|JIS|ISO-2022-JP|
|EUC|EUC-JP|
|ユニコード(UTF-7)|UTF-7|
|ユニコード(UTF-8)|UTF-8|
**機種依存文字
原因
-WindowsやMacintoshで文字コードが違い、表示されないために文字化けが起こります。
-また携帯で使用する絵文字も機種依存します。
対応
-機種依存する文字を使用しない。(全角一文字の特殊文字)
**5C文字の文字化け
テストをする際に「表示」と表示をしようとしたら、「侮ヲ」と表示されてしまい、気付くと言うのが、良くある発見するきっかけだと思う。
(自分も初めてPHPで掲示板を作った際に、実際これに嵌った。)
原因
-2バイト目が「5C」である文字が、「5C」がメタ文字の「\(日本語環境)」と認識されて化ける。
-よって、2バイト目が「5C」である文字は全て化ける可能性がある。
事例
※ここでは、「表示」という文字を見本にます。
-図のように「表」の2バイト目が「5C」と解釈されて取り除かれる。
|文字|表|示|
|文字コード(Shift_JIS)|95 5C|8E A6|
-結果、以下のような文字コードになり表示される。
|文字|侮|ヲ(半角)|
|文字コード(Shift_JIS)|95 8E|A6 |
対応
-ファイルをEUC-JPの形式で保存する。
-問題の文字の後ろに「\(日本語環境)」を追加すると正しく表示される。
追記
-色々条件により、EUC-JPの形式での作成が不可能な場合があるので、別の対応も必要。
**文字コード変換を行う際の判定ミス
発症環境は、PHP・Mojavi(多分この場合の影響としては関係ないと思いますが)使用
流れは、Shift_JIS(入力画面) → EUC-JP → Shift_JIS(入力画面)
また調べている時に分かったことですが、jcode.plでもバージョンによってこのエラーが発生するみたいです(同じ症状という意味で)
症状
-「写」のみを入力した場合に正しく表示されない。
-「(別の文字列)写」などは正しく表示される。
-「写(別の文字列)」などは正しく表示されない。
-「シフ(半角)」を入力すると「写」と表示される。
-「松」は入力されない。
原因
最初のエンコード(Shift_JIS(入力画面) → EUC-JP)を行う際に記述のコード
>$str = mb_convert_encoding($str, "EUC-JP", "auto");
上記を記述することによって、$str を EUC-JP に変換できます。
通常は"auto" を指定すると 元の文字コードを自動検出して変換を行います。
しかし、この場合に問題となったのは、なんらかの原因で正しく自動検出が出来なかった為に、正しく変換が行われなかった為に文字化けが発生したと思われます。
対応
-autoは使用せず、(この場合はShift_JIS)厳密に記述する。
**携帯ページ作成時の文字化け
症状
-携帯のキャリアの違いによって化ける。
-携帯で判別不可能な文字コードの使用。基本はShift_JIS
-↑解決の為に、PHPを使用(mb_convert_encoding)してautoでの判定ミス。※この場合に明確に記述が出来ない為、詳しくは上記参照の事。
解決
-携帯のキャリアごとに違ったページを用意する。
-基本的なタグのみを使用して、文字コードはShift_JISで作成する。
-文字コード問題(5c文字)関係があるが、PHPの設定やstripslashes、addslashesを使い分けを行い、あえてShift_JISで作成する。
追記
-Unixおよび、Linux環境にてプログラムやDBが絡む携帯コンテンツを作成する場合の文字コードの対応をどうするか?
-Shift_JIS環境では5c文字による文字化けが発生しますし、回避しようとしてEUC-JPで作成し、PHPにてautoで変換すると変換ミスを起こす場合があります。
-また、smartyを使いプログラム部分をEUC-JPで作成し、テンプレート部分をShift_JISで作成する方法も検討。
*文字化け
-[[ページ全体の文字化け(PC)]]
-[[ページ全体の文字化け(携帯)]]
-[[機種依存文字]]
-[[特定の文字が化ける]]