PHPプログラミング

レシピ

文字列

文字コードを変換する

mb_convert_encoding関数を使って、テキストの文字コードを変換する方法について解説します。

この記事のポイント

  • 文字コード変換はOSを跨いだファイル受け渡しなどで使用する
  • 旧字体漢字の文字コードは「SJIS」ではなく「sjis-win

目次

任意の文字コードに変換する

mb_convert_encoding関数は、次のように指定した文字コード(文字エンコーディング)への変換を行う関数です。

コード例

mb_convert_encoding($str, "sjis-win");

mb_convert_encoding関数は第1パラメータに文字コード変換をしたいテキスト、第2パラメータに変換後の文字コードを指定して使用します。

文字コードは現在主流になっている「UTF-8」の他にも、「Shift_JIS」「EUC-JP」などをはじめとした多くの種類があります。
特に、「WindowsからLinuxへ」などOSや他システムを跨いだファイル受け渡しなどで文字コードを変換するケースが多いかもしれません。

mb_convert_encoding関数は第3パラメータに変換前の文字コードを指定することができます。
このパラメータを省略した場合は、関数を実行している環境の文字コードが自動的に設定されます。
もし明示的に変換前の文字コードを指定したい場合は、次のように指定してください。

コード例

$str1 = "テキストの文字コードを変換する";
$str2 = null;

$str2 = mb_convert_encoding( $str1, "sjis-win", "EUC-JP,UTF-8");

$str1には変換前のテキスト、$str2に変換後のテキストが入ります。

上記の例では、「EUC-JP」または「UTF-8」を、「sjis-win」に変換します。
変換前の文字コードの指定を省略するために「auto」を指定することもできます。

コード例

// "auto"は"UTF-8,SJIS,JIS,ASCII,EUC-JP"を指定したことになる
mb_convert_encoding( $str1, "sjis-win", "auto");

旧字体漢字の文字コードに変換する

よく「UTF-8」から「SJIS」に変換すると旧字体漢字である「髙(はしご高)」などが文字化けすることがあります。
旧字体漢字は「sjis-win」という文字コードを使用するため、こちらに変換することで解決することができます。

コード例

$str1 = "髙橋";
$str2 = null;

$str2 = mb_convert_encoding( $str1, "sjis-win", "UTF");

今回登場した文字コード以外にも、mbstringで扱うことのできる文字コードは豊富にあります。
詳しくは、php.netの下記ページを参照してください。
サポートされる文字エンコーディング – php.net

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。