[php]文字コード変換時にゴミが入る場合の対応 [PHP]
phpで文字コード変換を行うとゴミが入ってしまい、正しく変換されない場合があります。
例えば、Windows上で生成したテキストファイルから文字を取得して文字コード変換を行った場合、ゴミが入ってしまう場合があります。このとき、先頭にBOMが付加されていることがあります。
BOMは先頭3バイトにバイナリで表すと『0xEF 0xBB 0xBF』が付加されています。
これはバイト順マーク(Byte Order Mark)で、ファイルのエンコーディングコードが符号化方式であることを表しています。UTF-8の符号付やWindowsのメモ帳で作成したファイルなどの場合に付加されることが知られています。
結論として文字コード変換を行う場合には、BOMを取り込まないようにすれば、ゴミを除去することができます。
方法例としては、変数をord関数(ASCII コード)で参照し、最初の3バイトにBOMが付加されていれば、除去することができます。
また、先頭や終端に半角SPや改行コードが入っている場合、これも文字コード変換時にゴミとなってしまう場合があるので除去するのが良いでしょう。除去する関数としてtrim関数などがあります。
ゴミが入ってしまう原因
例えば、Windows上で生成したテキストファイルから文字を取得して文字コード変換を行った場合、ゴミが入ってしまう場合があります。このとき、先頭にBOMが付加されていることがあります。
BOMは先頭3バイトにバイナリで表すと『0xEF 0xBB 0xBF』が付加されています。
これはバイト順マーク(Byte Order Mark)で、ファイルのエンコーディングコードが符号化方式であることを表しています。UTF-8の符号付やWindowsのメモ帳で作成したファイルなどの場合に付加されることが知られています。
結論として文字コード変換を行う場合には、BOMを取り込まないようにすれば、ゴミを除去することができます。
方法例としては、変数をord関数(ASCII コード)で参照し、最初の3バイトにBOMが付加されていれば、除去することができます。
また、先頭や終端に半角SPや改行コードが入っている場合、これも文字コード変換時にゴミとなってしまう場合があるので除去するのが良いでしょう。除去する関数としてtrim関数などがあります。
2012-09-12 01:08
【PR】