ホームページ >バックエンド開発 >PHPの問題 >PHPを使用してUnicodeとutf8を変換するにはどうすればよいですか?

PHPを使用してUnicodeとutf8を変換するにはどうすればよいですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-07-10 11:03:163295ブラウズ

PHP を使用して Unicode と utf8 を変換する方法: まず、[4-6] バイトのエンコードを考慮する必要はありません。その後、4 バイトを超える [utf-8] 文字​​が表示されます。直接文字化けとみなされますが、無視するか、Unicode エンティティ形式に変換すると、コードは [$utf8char = "{$c};"] になります。

PHPを使用してUnicodeとutf8を変換するにはどうすればよいですか?

php を使用して Unicode と utf8 を変換する方法:

Unicode エンコードでは、utf-8 と gb を実装します。シリーズ エンコード (gb2312、gbk、gb18030) 変換の基礎. utf-8 からこれらのエンコードへの比較表を直接作成することもできますが、utf-8 の可変エンコードが不確実であるため、これを行う人はほとんどいません。一般に、Unicode と gb エンコーディング間の比較表が使用されます。Unicode (UCS-2) は実際には utf-8 の基本エンコーディングであり、utf-8 はその実装にすぎません。この 2 つは次の対応関係があります:

  • #Unicode 記号の範囲 | UTF-8 エンコード方式

  • ##u0000 0000 - u0000 007F | 0xxxxxxxx

  • # #u0000 0080 - u0000 07FF | 110xxxxx 10xxxxxx
  • ##u0000 0800 - u0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
  • 現在 utf-8 で使用されている文字のため、すべてUCS-2なので、4~6バイトのエンコーディングを考慮する必要はありません。同様に、逆変換時にUTF-8の文字が4バイト以上出現した場合は、そのまま文字化けとみなします。無視または変換します。 Unicode エンティティ形式 ("long int;" 形式) に変換し、それをブラウザまたは関連する解析プログラムに渡して処理します。PHP を使用して Unicode を utf-8 エンコーディングに変換するアルゴリズムは次のとおりです:
  • /*
     * 参数 $c 是unicode字符编码的int类型数值,如果是用二进制读取的数据,在php中通常要用 hexdec(bin2hex( $bin_unichar )) 这样转换
     */
    function uni2utf8( $c )
    {
      if ($c < 0x80)
      {
            $utf8char = chr($c);
      }
      else if ($c < 0x800)
      {
            $utf8char = chr(0xC0 | $c >> 0x06).chr(0x80 | $c & 0x3F);
      }
      else if ($c < 0x10000)
      {
            $utf8char = chr(0xE0 | $c >> 0x0C).chr(0x80 | $c >> 0x06 & 0x3F).chr(0x80 | $c & 0x3F);
      }
      //因为UCS-2只有两字节,所以后面的情况是不可能出现的,这里只是说明unicode HTML实体编码的用法。
      else
      {
            $utf8char = "&#{$c};";
      }
      return $utf8char;
    }
現在の環境では、utf-8 文字セット == unicode (UCS-2) と考えられますが、理論上、主要な文字セット関係の包含関係は次のとおりです。

utf-8 > unicode(UCS-2) > gb18030 > gbk > gb2312

したがって、エンコードがすべて正しい場合:

gb2312 => gbk => gb18030 => unicode(UCS-2) => utf-8

このような変換プロセスは基本的にロスレスですが、逆に

utf-8 => unicode(UCS-2) => gb18030=> gbk => gb2312

このような変換処理では、認識できない文字が含まれる可能性が非常に高いため、システムが UTF-8 エンコードを使用している場合は、安易にエンコード操作を逆にしないようにしてください。

関連する学習の推奨事項:

PHP プログラミングの入門から熟練度まで

以上がPHPを使用してUnicodeとutf8を変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。