如何使用 php 将文本转换为 unicode 代码点,如 u0054u0068u0069u0073


How to convert text to unicode code point like u0054u0068u0069u0073 using php?

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

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

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

我尝试过的事情

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

我也在这里尝试了斯科特·雷宁的代码 如何获取 utf-8 字符串中给定字符的代码点号? 但我似乎无法让它工作。当我尝试它时,我将脚本包含在一个文件中

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

它只是回荡在test.

我也读过我可以使用

echo json_encode("test");

但同样,我只test打印到屏幕上。

任何帮助将不胜感激。

编辑1:实际上我认为它们被称为代码单元而不是代码点。

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);
}