関数の概要
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間の変換や、取り扱うデータのエンコーディングが不明瞭な場合に役立ちます。複数のエンコーディングを指定して自動検出できる点も初心者に優しく、実務でもよく使われています。文字コードの違いによる文字化け対策にぜひ活用しましょう。
