mb_convert_encoding

関数の概要

PHPの mb_convert_encoding 関数は、文字列の文字コードを別のエンコーディングに変換するために使われます。特に日本語などのマルチバイト文字を含む文字列のエンコーディングを正しく扱う場合に重宝します。Webアプリケーションで異なる文字コード間の互換性を確保する際に非常に重要な関数です。

パラメータの説明

  • string $string : 変換対象の文字列を指定します。
  • string $to_encoding : 変換後の文字コードを指定します。例: “UTF-8”, “SJIS”, “EUC-JP” など。
  • mixed $from_encoding : 変換前の文字コードを指定します。文字列でも配列でも指定可能です。省略した場合は内部設定のエンコーディングが使われます。

戻り値

変換後の文字列を返します。変換に失敗した場合は元の文字列が返ることもありますが、ほとんどの場合は指定したエンコーディングに変換された文字列が返されます。

使用例

基本的な使い方

<?php
$original = "こんにちは";
$converted = mb_convert_encoding($original, "SJIS", "UTF-8");
echo $converted;
?>

UTF-8で書かれた日本語の文字列をShift_JISに変換しています。主に古いシステムやWindows環境向けのファイル出力で使います。

複数のエンコーディングから検出して変換

<?php
$original = "こんにちは";
$converted = mb_convert_encoding($original, "UTF-8", ["SJIS", "EUC-JP", "JIS"]);
echo $converted;
?>

変換元のエンコーディングが複数考えられる場合に配列で指定できるため、内部で自動的に適切なエンコーディングを検出して変換してくれます。

ファイル読み込み時のエンコーディング変換例

<?php
$content = file_get_contents("sample.txt");
$utf8content = mb_convert_encoding($content, "UTF-8", "SJIS");
echo $utf8content;
?>

Shift_JISで保存されたテキストファイルを読み込んだ後、UTF-8に変換してブラウザで表示する例です。これにより文字化けを防げます。

関連する関数

  • mb_detect_encoding – 文字列のエンコーディングを自動検出する関数
  • mb_internal_encoding – 内部文字エンコーディングを設定・取得する関数
  • mb_convert_kana – 文字列のかな文字を変換する関数

まとめ

mb_convert_encoding はPHPでマルチバイト文字列のエンコーディングを安全かつ簡単に変換するために欠かせない関数です。特にUTF-8とShift_JIS間の変換や、取り扱うデータのエンコーディングが不明瞭な場合に役立ちます。複数のエンコーディングを指定して自動検出できる点も初心者に優しく、実務でもよく使われています。文字コードの違いによる文字化け対策にぜひ活用しましょう。