複数のファイルやWebページなどでさまざまな文字コードが混在するケースというのは現在でもよくあることです。そのような場合、文字コードの変換が必須になります。文字コードの変換をPHPで行う方法を見ていきます。
文字コードの変換を行う関数
文字コードの変換を行う関数は mb_convert_encoding です。
1 |
string mb_convert_encoding( 対象文字列, 変換後の文字コード , 元の文字コード ) |
元の文字コードは省略可能です。省略した場合、内部文字エンコーディングとして設定された文字コードとみなします。
戻り値で変換した文字列を返します。
基本的な使い方
まずは基本的な使い方を見てみます。ファイル test.txt はシフトJISの文字コードで書かれています。
1 2 3 4 |
<?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-8 | UTF-8 |
sjis | シフトJIS |
sjis-win | シフトJIS(Windows) |
jis | JISコード |
euc-jp | EUCコード |
三番目の引数は変換前の文字コードです。これも二番目の引数と同じように指定します。
シフト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に変換して処理を行うとよいでしょう。