今回は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タグとして解釈される可能性のある文字列を安全に表示することができます。
まずは無料相談してみましょう!
- 将来に漠然と不安を感じるが、何から始めていいかわからない、、
- 副業でプログラミングを学びたいけど、本当に稼げるの??
- 効率よくスキルを身につけたいけど、どのくらいの期間が必要??
こんな悩みが少しでもあれば、まずは無料相談に参加してみましょう!現役エンジニア・デザイナーになんでも気軽に相談できる30分が全て無料です
※今なら参加特典でAmazonギフト券がもらえます!
まとめ
✅PHPにおける文字コードについて
今回は以上になります。
PHPも文字コード、文字コード変換についてよく理解して実際の開発に取り組んでいきましょう!