2

編集 2: php5 を使用して英語の単語を Unicode 番号に変換し、\u* * * * として生成したいのですが、* * * * は Unicode 番号です。

私の最初の質問では、\u は実際には JavaScript でエスケープされているだけの Unicode をエンコードするための標準であると誤って考えていました (これを指摘してくれた Jukka K. Korpela に感謝します)。PHP で変換したかったのですが、変換された Unicode は JavaScript で使用されることになっていました。

以下のオプションを試しましたが、うまくいきませんでした。しかし、decezeの答えはうまくいきました、どうもありがとうございました!

私が試したこと

これを行うにはiconvを使用できると読みましたが、運が悪く、方法の例が見つかりません。

ここでスコット・レイネンのコードも試しました。utf -8文字列で特定の文字のコードポイント番号を取得する方法は? しかし、私はそれを機能させることができないようです。私が試したとき、スクリプトをファイルに含めました

$str='test';
echo utf8_to_unicode($str);

それはちょうど反響しましたtest

使用できることも読みました

echo json_encode("test");

しかし、やはりtest画面に印刷されるだけです。

どんな助けでも大歓迎です。

EDIT1:実際には、コードポイントではなくコードユニットと呼ばれていると思います。

4

1 に答える 1

10

json_encodeほとんどあなたのためにそれをしますが、非ASCII文字のためだけです。したがって、必要なのはASCII文字を手動で変換することだけです。これを文字ごとに実行する関数は次のとおりです。

function utf8ToUnicodeCodePoints($str) {
    if (!mb_check_encoding($str, 'UTF-8')) {
        trigger_error('$str is not encoded in UTF-8, I cannot work like this');
        return false;
    }
    return preg_replace_callback('/./u', function ($m) {
        $ord = ord($m[0]);
        if ($ord <= 127) {
            return sprintf('\u%04x', $ord);
        } else {
            return trim(json_encode($m[0]), '"');
        }
    }, $str);
}
于 2012-04-11T09:18:29.653 に答える