最終更新日:
公開日:
レシピ
文字列
文字コードを変換する
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
こちらの記事は役に立ちましたか?
コメントありがとうございます!
運営の参考にさせていただきます。
ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。