ホームページ >バックエンド開発 >PHPチュートリアル >PHP文字列エンコード変換プログラム_PHPチュートリアル
UFT-8 文字を gbk または gb2312 エンコーディングに変換する必要があることがよくありますが、変換プロセス中にいくつかの問題が発生することがよくあります。文字エンコーディングの変換を実現するための PHP 独自の文字列変換関数の使用方法を紹介します。
iconv 関数のバグ。 iconv は文字「-」を gb2312 に変換するときにエラーになります
解決策は非常に簡単です。変換する必要があるエンコーディングの後に「//IGNORE」を追加するだけです。これはiconv関数の2番目のパラメータです。
以下の通り:
以下、引用内容です
コードは次のとおりです | コードをコピー |
iconv(“UTF-8″,”GB2312//IGNORE”,$data) |
ignore は、変換中にエラーを無視することを意味します。ignore パラメーターがないと、この文字に続くすべての文字列を保存できません。
iconv() 関数は php5 に組み込まれています。
リエジ
コードは次のとおりです | コードをコピー |
echo $str= 'こんにちは、ここではコーヒーを販売しています!'; echo iconv('GB2312', 'UTF-8', $str); //文字列エンコーディングを GB2312 から UTF-8 に変換します echo iconv_substr($str, 1, 1, 'UTF-8'); //バイト数ではなく文字数で切り捨てる echo iconv_strlen($str, 'UTF-8') //設定されたエンコーディングの文字列長を取得します //これも使われています $content = iconv("UTF-8","gbk//TRANSLIT",$content); |
ただし、iconv 関数を使用すると、次のような通知が表示されることがあります: iconv() [function.iconv]: 入力文字列に不正な文字が検出されました... エラー、
その理由は、gb2312 は gbk や uft8 よりも小さいため、変換する際には注意が必要です。ただし、この問題をより適切に解決できる関数 mb_detect_encoding も提供しています。
今度はそれをより専門的な関数に記述します
コードは次のとおりです | コードをコピー |
関数 phpcharset($data, $to) { |
文字のエンコーディングがわからない場合があるため、最初にエンコーディングを検出してから変換する必要があります。
コードは次のとおりです | コードをコピー |
|