2

编辑 2:我想使用 php5 将英文单词转换为 unicode 数字,然后生成为 \u* * * * 其中 * * * * 是 unicode 数字。

在我最初的问题中,我错误地认为 \u 是编码 unicode 的标准,而实际上它只是在 JavaScript 中被转义(感谢 Jukka K. Korpela 指出这一点)。即使我想在 PHP 中进行转换,转换后的 unicode 也将在 JavaScript 中使用。

我尝试了以下选项,但没有运气。deceze的回答虽然成功了,但非常感谢!

我尝试过的事情

我读过我可以使用 iconv 来做到这一点,但我没有运气,也找不到任何关于如何做的例子。

我也在这里尝试了 Scott Reynen 的代码How to get code point number for a given character in a utf-8 string? 但我似乎无法让它工作。当我尝试它时,我将脚本与

$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 回答