PHPで文字コードを変換する方法:mb_convert_encoding

複数のファイルやWebページなどでさまざまな文字コードが混在するケースというのは現在でもよくあることです。そのような場合、文字コードの変換が必須になります。文字コードの変換をPHPで行う方法を見ていきます。

文字コードの変換を行う関数

文字コードの変換を行う関数は mb_convert_encoding です。

string mb_convert_encoding( 対象文字列, 変換後の文字コード , 元の文字コード )

元の文字コードは省略可能です。省略した場合、内部文字エンコーディングとして設定された文字コードとみなします。

戻り値で変換した文字列を返します。

基本的な使い方

まずは基本的な使い方を見てみます。ファイル test.txt はシフトJISの文字コードで書かれています。

<?php
$data= file_get_contents('./test.txt');
$str = mb_convert_encoding($data,"utf-8","sjis");
?>

まず、file_get_contentsでシフトJISの文字を $data に読み込みました。

次にmb_convert_encoding()を使って $data を文字コード「シフトJIS」から「UTF-8」に変換しています。

引数の解説

最初の引数 $data は変換対象の変数です。

二番目の引数は変換後の文字コードです。これは文字列で指定します。以下のような文字コードを指定可能です。

utf-8UTF-8
sjis シフトJIS 
sjis-win シフトJIS(Windows) 
 jisJISコード 
 euc-jpEUCコード 

三番目の引数は変換前の文字コードです。これも二番目の引数と同じように指定します。

シフトJISの注意点

シフトJISは上記のように単なる sjis と sjis-win があります。sjis-winはWindows用で使われているシフトJISです。

一般的にWindowsでシフトJISは使われており、一部の文字は sjis-win でないと文字化けを起こすことがあります。

mb_convert_encoding()の sjis で文字化けを起こすときには sjis-win を使ってみましょう。

まとめ

文字化けを避けるためには文字コードの変換は必要になってくる機能です。ただし、最近はutf-8で文字コードをそろえることが多いので、mb_convert_encoding()でいったんutf-8に変換して処理を行うとよいでしょう。


イベント