WEB開発をしているとよく文字化けに遭遇します(笑)
文字化けって地味にうざったいんですよね。
とは言ってもちゃんと注意していれば大抵の場合は大丈夫です。
文字化けの原因
この文字化けの原因は、文字コードのずれです。
“あ”という文字を扱うにしても、Shift-JISとUTF-8では内部のコードの持ち方が違います。
具体的には僕も知らないですが、イメージだとShift-JISの”あ”は「1001100100010001」なのに対して、UTF-8の”あ”は「0111000100110011」だったりします。
データを保存するとき何MBとか何GBとかいいますね?
Bはバイトのことで、1バイトは8ビットです。
1ビットは0か1で表現するので、2バイト文字だったら上のイメージのように0か1が16個並ぶんです。
そして文字コードの種類によってどの並び方がどの文字になるかは異なってきます。
PHPに限らず開発する場合はPHPファイルや設定ファイル、データベースなどデータを保持したり定義するファイルが色々あります。
これらの文字コードが異なってしまうことが主な原因になります。
文字化けの対策
PHPファイルや設定ファイル、データベースなどを作成するときの文字コードを全て一致させておけば文字化けはほぼありません。
うっかり文字コードが異なると文字化けしてしまいます。
自分1人で作る場合や少人数のチームの場合は文字コードは予め何にするか相談してプログラミングを開始したらいいと思います。
ただ、大規模なシステムや外部のシステムとの連携がある場合には、その外部のシステムの文字コードまではこちらでは定義できないのでテストして文字化けするなら文字コードを変換する必要があります。
PHPで文字コードを変換するには mb_convert_encoding() という関数があります。
これで自分のシステムの文字コードに変換して対策しましょう。
まとめ
文字コードの問題はそれほど解決が難しくはないが、システム開発に慣れていないと何故文字化けしてるか分からなかったりします。
そんなときはまずPHPファイルやデータベースなどの文字コードを確認します。
それでも文字化けするようでしたら、その文字がどこで定義されたものかを追っていって、外部システムなど触れない部分の場合は取得した時点で文字コードを変換します。
これで大抵はOKだと思います。
コメントを残す