文字コードの変換

入力された文字コードの変換をしましょう。

ユーザが入力する文字は環境によって文字コードが異なることがあります。 文字化け等の原因になるので、掲示板などでは、入力された文字列の文字コードをチェックして、統一するようにしましょう。

文字コードとは

コンピュータは、文字や記号を直接扱うことはできないので、文字に数字を割り当てることで処理しています。 この文字や記号と数字の対応のさせ方を決めたものを文字コードと呼びます。 文字コードは恣意的なものなので、JIS、シフトJIS(SJIS)、EUC-JP、UTF-8などいくつかの方式が利用されています。

インターネットでは、メール送受信はJISが使われています。 ホームページではSJISかEUC-JPが多いようですが、国際標準のUTF-8を使っているホームページも多くなっています。

文字コードはいくつかあるため、間違った文字コードを用いると、文字が正しく表示されない、文字化けと呼ばれる状態になってしまいます。 そのため、PHP では、文字コードを検出する関数mb_detect_encodingや、文字コードを変換する関数mb_convert_encodingが用意されています。

文字コードを検出するには

文字コードを検出するには、関数mb_detect_encoding を利用します。 関数mb_detect_encoding は、「テキスト」を引数にとり、そのテキストの文字コードを返します。

  $mojicode = mb_detect_encoding($textdata);
  print "$textdata の文字コードは $mojicode です。";

文字コードを変換するには

文字コードを変換するには、関数mb_convert_encoding を利用します。 mb_convert_encoding は、「変換したい文字列」「変換後の文字コード」「 変換前の文字コード」を引数に取ります。 (※変換前の文字コードは省略することもでき、その場合は文字コードを自動的に判別して変換します。) 関数mb_convert_encoding は、変換後のテキストを返します。

  $text = mb_convert_encoding($textdata,"UTF-8","EUC-JP");
  print $text;

変数の文字コードを変換する場合は、関数mb_convert_variables を利用することも可能です。 関数mb_convert_variables は、「変換後の文字コード」「変換前の文字コード」「変数(配列も可)」を引数に取り、変換前の文字コードを返します。 この関数は、変数の中身を直接書き換えるので、注意しましょう。

  mb_convert_variables("UTF-8","EUC-JP",$textdata);

関数mb_convert_variables は変換前の文字コードを省略することはできません。 文字コードが不明の場合は、変換前の文字コードを「auto」にしてください。

Copyright (C) 2003-2013. PHP で WEB 作成 All rights reserved.