PHP

【PHP】文字コードの変換には「SJIS-win」「eucJP-win」を指定しましょう!

【PHP】文字コードの変換には「SJIS-win」「eucJP-win」を指定しましょう!

mb_convert_encodingでの文字コードの変換

今回は、PHPで文字コードの変換を行う場合のお話です。

PHPでの文字変換は、mb_convert_encoding関数を使用します。

使い方としては、このような感じですね。
$ret = mb_convert_encoding($chara, “SJIS”, “UTF-8”);

こうすることで、$charaの文字コードをUTF-8からShift_Jisへ変換することが出来ます。
簡単ですね!

文字コードの変換には「SJIS」ではなく「SJIS-win」を!

文字コードの変換は、基本的には、上記で説明したコードの書き方でOKです。
ただ、これだと、特殊文字が文字化けしてしまうという不具合が発生してしまいます。

そこで、その対策として、「SJIS」ではなく「SJIS-win」を指定します。

こうなります。

$ret = mb_convert_encoding($chara, “SJIS-win“, “UTF-8”);

「SJIS-win」を指定することで、特殊文字も文字化けせずにShift_Jisへ変換することが出来ます。

「EUC-JP」の文字コード変換には「eucJP-win」を!

Shift_Jisと同様に、EUC-JPへ変換する場合も「eucJP-win」を使用します。

$ret = mb_convert_encoding($chara, “eucJP-win“, “UTF-8”);

これで、文字化けせずにEUC-JPへ変換することが出来ます。

まとめ

今回は、PHPで文字コードを指定する場合のお話でした。

PHPで文字コードの変換を行いう場合や、文字コードの指定を行う場合には、「SJIS-win」や「eucJP-win」を使用しましょう。
それにより、特殊文字も文字化けせずに変換することが出来ます。

もちろん、「SJIS」や「EUC-JP」を指定するのが間違いという訳ではないです。
ですが、「SJIS-win」や「eucJP-win」の方が扱える文字が多く、文字化け対策にもなります。

ただ、「SJIS-win」「eucJP-win」でも、全ての文字を文字化けせずに変換できるわけではないので、その点は注意しましょう。
例えば、「リットル(筆記体の小文字のエル)」を使っていると、本来Shift_Jisには無い文字なので、文字化けを起こしてしまうと思います。