0

拡張 ASCII 文字セットにある文字の ASCII 値を取得しようとしています。

お気に入り:

echo ord('„');

その出力は次のとおりです。226

しかし、実際の ASCII 値は : 132 です。

私の質問は、1 バイト サイズを超える文字の実際の ASCII 値を取得する方法です。

4

2 に答える 2

0

ここで解決策を見つけました。あなたの文字は utf8 エンコーディングで 8222 であり、マルチバイト文字 (mb) またはhtml 特殊エンティティと呼ばれます。

function mb_ord($string)
{
    if (extension_loaded('mbstring') === true)
    {
        mb_language('Neutral');
        mb_internal_encoding('UTF-8');
        mb_detect_order(array('UTF-8', 'ISO-8859-15', 'ISO-8859-1', 'ASCII'));

        $result = unpack('N', mb_convert_encoding($string, 'UCS-4BE', 'UTF-8'));

        if (is_array($result) === true)
        {
            return $result[1];
        }
    }

    return ord($string);
}
echo mb_ord('„');
于 2015-03-04T07:52:59.157 に答える
0

ord指定された文字列の最初のバイトを単純に取り、その数値を 10 進数形式で返します。期待した結果が得られない場合は、入力が期待したものではない可能性があります。拡張 ASCII のバイト値が必要な場合は、入力文字列を拡張 ASCII でエンコードする必要があります。E2 80 9EソースコードファイルがUTF-8として保存されているため、入力は実際にはUTF-8でエンコードされているため、現在、の最初のバイトの値、「„」のUTF-8エンコードを取得している可能性があります。

于 2015-03-04T07:01:11.447 に答える