ホームページ >バックエンド開発 >PHPチュートリアル >PHP 4 または 5 で UTF-8 文字列を UCS-2 コードポイントに変換するにはどうすればよいですか?

PHP 4 または 5 で UTF-8 文字列を UCS-2 コードポイントに変換するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 18:04:31595ブラウズ

How can I convert a UTF-8 string to UCS-2 code points in PHP 4 or 5?

PHP 4 または 5 で UTF-8 文字列の UCS-2 コード ポイントを取得する

UTF の UCS-2 コード ポイントを取得するには-8 文字列を使用すると、PHP で利用可能な既存のユーティリティを利用できます。この変換を容易にするために、iconv などのライブラリの使用を検討してください。

カスタム ソリューションを希望する場合は、UTF-8 形式を理解することが重要です。各コード ポイントは、その値に基づいて 1 ~ 4 バイトとして保存されます。次の範囲が適用されます:

  • 1 バイト: 0xxxxxxx
  • 2 バイト: 110xxxxx 10xxxxxx
  • 3 バイト: 1110xxxx 10xxxxxx 10xxxxxx
  • 4 バイト: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

文字のバイト数を判断するには、最初のバイトを調べます。接頭辞 0 は 1 バイト文字、110 は 2 バイト、1110 は 3 バイト文字、11110 は 4 バイト文字を示します。

文字のサイズがわかったら、ビット単位の演算を実行して変換できます。それ。 UCS-2 は U FFFF より上の文字を表現できないことに注意してください。

参考までに、使用できる PHP 4 または 5 の関数を次に示します。

<code class="php">function get_ucs2_codepoint($char)
{
    $byte = ord($char);
    if ($byte < 128) {
        return $byte;
    } elseif ($byte < 224) {
        return (($byte & 63) << 6) | (ord($char[1]) & 63);
    } elseif ($byte < 240) {
        return (($byte & 31) << 12) | ((ord($char[1]) & 63) << 6) | (ord($char[2]) & 63);
    } else {
        return 0; // UCS-2 cannot handle code points this high
    }
}</code>

この関数は処理できないことに注意してください。すべての Unicode 文字。UCS-2 で表現できるもののみ。完全な Unicode を処理する必要がある場合は、代替ライブラリまたは PHP 6 関数を使用する必要があります。

以上がPHP 4 または 5 で UTF-8 文字列を UCS-2 コードポイントに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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