PHP

【PHPの基礎】PHPにおける文字コードについてマスターしよう!

今回はPHPにおける文字コードについて説明します。

PHPで開発を行う際の基礎となる項目なので、是非今回でマスターしましょう!

独学がつらくなった方は下記をご覧ください!

>>【初心者必見!】無料体験ができるプログラミングスクールをご紹介!

文字コードとは

PHPは、Webアプリケーションの開発言語として広く使用されており、多言語対応が求められることが多いです。そのため、PHPでは多言語の文字を処理するための機能が豊富に用意されています

文字コードは、文字をコンピュータ内で表現するための規則です。文字コードには、様々な種類がありますが、PHPでよく使われるのはUTF-8、Shift_JIS、EUC-JP、GB2312/GBKなどです。

それぞれを確認してみましょう。

おもな文字コード

UTF-8

UTF-8は、Unicode文字集合の1つで、多言語の文字を包括的に扱えます。UTF-8は、1バイトから4バイトまでの可変長の文字コードを使用し、ASCII文字も含めてすべての文字を表現することができます。

Shift_JIS

Shift_JISは、日本語の文字コードで、日本国内で広く使用されています。Shift_JISは、1バイトと2バイトの可変長の文字コードを使用しています。Shift_JISには、JIS X 0201(半角文字)とJIS X 0208(全角文字)があります。

EUC-JP

EUC-JPは、日本語の文字コードで、Shift_JISと同様に日本国内で広く使用されています。EUC-JPは、1バイトと2バイトの可変長の文字コードを使用しています。EUC-JPには、JIS X 0201(半角文字)とJIS X 0208(全角文字)があります。

GB2312/GBK

GB2312/GBKは、中国語の文字コードで、中国国内で広く使用されています。GB2312は、2バイトの可変長の文字コードを使用しており、GBKは、GB2312を拡張したものです。

以上がPHPでよく使用される文字コードになります。

文字コードの処理には、文字コードを正確に指定することが重要です。文字コードを誤って指定すると、文字化けや文字の表示が崩れるなどの問題が発生する可能性があります。また、文字コードの変換を行う際にも、正確な変換ルールを使用する必要があります。

PHPの文字コード変換

次は文字コードの変換方法についてみてみましょう!

mb_convert_encoding関数

mb_convert_encoding関数は、文字列の文字コードを変換するための関数です。

使い方は以下の通りです。

$convertedString = mb_convert_encoding($string, $toEncoding, $fromEncoding);

引数は下記の通りです。

  • $string:変換する文字列
  • $toEncoding:変換後の文字コード
  • $fromEncoding:変換前の文字コード(オプション)

たとえば、Shift_JISでエンコードされた文字列をUTF-8に変換する場合、以下のように書きます。

$convertedString = mb_convert_encoding($string, "UTF-8", "Shift_JIS");

iconv関数

iconv関数も、文字列の文字コードを変換するための関数です。

mb_convert_encoding関数と同様に、変換前の文字コードと変換後の文字コードを指定する必要があります。

$convertedString = iconv($fromEncoding, $toEncoding, $string);

たとえば、EUC-JPでエンコードされた文字列をUTF-8に変換する場合、以下のように書きます。

$convertedString = iconv("EUC-JP", "UTF-8", $string);

htmlspecialchars関数

htmlspecialchars関数は、特殊文字をHTMLエンティティに変換するための関数です。

HTMLエンティティとは、HTMLで特殊な意味を持つ文字を表現するために使用される特別な文字列のことです。たとえば、<は<、>は>、&は&に変換されます。

この関数を使用することで、HTMLタグとして認識されないようにすることができます。

使い方は下記の通りです。

$encodedString = htmlspecialchars($string, $flags, $encoding);

引数は下記の通りです。

  • $string:エンコードする文字列
  • $flags:オプションのフラグ(省略可能)
  • $encoding:エンコードする文字コード(省略可能)

例えば、以下のような文字列をエンコードする場合を考えます。

$string = "<script>alert('Hello, world!');</script>";

この文字列は、HTMLタグとして解釈される可能性があり、セキュリティ上のリスクとなるため、HTMLエンティティに変換する必要があります。

$encodedString = htmlspecialchars($string, ENT_QUOTES, "UTF-8");

ここでは、第1引数に変換する文字列を指定し、第2引数にはENT_QUOTESフラグを指定しています。ENT_QUOTESフラグは、シングルクオートとダブルクオートの両方をエンコードするフラグです。第3引数には、エンコードする文字コードを指定しています。

このようにして、htmlspecialchars関数を使用することで、HTMLタグとして解釈される可能性のある文字列を安全に表示することができます

まずは無料相談してみましょう!

まとめ

今回説明した内容

✅PHPにおける文字コードについて

今回は以上になります。

PHPも文字コード、文字コード変換についてよく理解して実際の開発に取り組んでいきましょう!