mb_convert_encoding関数の使い方(文字エンコードを変換する)

PHP で用意されている組み込み関数の一つである mb_convert_encoding 関数の使い方です。 mb_convert_encoding 関数は文字のエンコードを変換します。

(2022 年 09 月 28 日公開 / 2022 年 09 月 28 日更新)

mb_convert_encoding関数の書式と基本的な使い方

mb_convert_encoding 関数は次のように定義されています。

mb_convert_encoding
string mb_convert_encoding ( string $str, 
                             string $to_encoding
                          [, mixed $from_encoding] )
mb_convert_encoding() は、文字列 strの文字エンコーディングを
from_encoding から to_encoding に変換します。

引数:
  $str  対象の文字列
  $to_encoding  変換後のエンコーディング
  $from_encoding  変換前のエンコーディング
戻り値:
  エンコードが変換された文字列

対象の文字列を指定したエンコーディングに変換します。1番目に引数には対象の文字列を格納した変数を指定します。2番目の引数には変換後のエンコーディングとして「EUC-JP」や「SJIS」などのエンコーディング名を指定します。

3番目の引数は省略可能ですが対象の文字列の変換前のエンコーディングを指定します。変換前のエンコーディングが分かっていればそのエンコーディングを指定します。不明な場合は可能性があるエンコーディングを順にカンマで区切って記述します。「auto」を指定した場合には「ASCII,JIS,UTF-8,EUC-JP,SJIS」と記述した場合と同じです。

具体的には次のように記述します。

$str = "元になっている文字列";

$str = mb_convert_encoding($str, "JIS", "SJIS");

この場合は「SJIS」で記述された文字列のエンコードを「JIS」に変換します。

$str = "元になっている文字列";

$str = mb_convert_encoding($str, "JIS", "auto");

この場合は元の文字列のエンコーディングを「ASCII」「JIS」「UTF-8」「EUC-JP」「SJIS」の順番で調べて、そのエンコーディングから「JIS」に変換します。

サンプルコード

では実際に試してみます。

<html>
<head><title>PHP TEST</title></head>
<body>

<p>エンコーディングの変換</p>

<?php
$str = "元になっている文字列";

print($str."<br>");

$str = mb_convert_encoding($str, "UTF-8", "auto");

print($str);
?>
</body>
</html>

上記ファイルを Web サーバに設置しブラウザ経由で見ると下記のように表示されます。

mb_convert_encoding

変換された文字列は文字化けしていますがブラウザの設定を「UTF-8」にすると次のように表示されます。

mb_convert_encoding

-- --

PHP で用意されている組み込み関数の一つである mb_convert_encoding 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。