gpt4 book ai didi

javascript - 将 Unicode Javascript 字符串转换为 PHP utf8 字符串

转载 作者:行者123 更新时间:2023-11-29 21:34:44 24 4
gpt4 key购买 nike

我用输入文本制作表格。

<input type="text" id="input" value=""/>

我像这样从网络接收到 utf-8 字符串(使用 javascript、jquery)

var str = '\u306e\u7c21\u5358\u306a\u8aac\u660e';

str 是'の简单な说明'。

将输入字段值设置为'str'

$('#input').val(str);

此输入替换所有转义字符串 '\' 并像这样设置字符串。

<input type"text" id="input" value="u306eu7c21u5358u306au8aacu660e"/>

这点没问题。显示字符也不错。

enter image description here

但是。

当我用 PHP 将这个字符串保存到我的数据库中时

PHP 将此值非转义 utf8 字符串 'u306eu7c21u5358u306au8aacu660e' 放入数据库

下次我调用

<input type="text" id="input" value="<?=$str?>">

浏览器显示原始值

只是'u306eu7c21u5358u306au8aacu660e'

不是'の简单な说明'

enter image description here

不知道怎么回事

我试过了

$str = json_decode("\"".$str."\"");
html_entity_decode(...);
mb_convert_encoding(...);

但无法正常工作...

如何将这个非转义的 utf-8 字符串转换为通用的 utf-8 字符串?

最佳答案

您必须支持多字节字符串。这里有一些额外的工作是你需要的:

<?php

$str = 'u306eu7c21u5358u306au8aacu660e';

function converter($sequence) {
return mb_convert_encoding(pack('H*', $sequence), 'UTF-8', 'UCS-2BE');
}
# array_filter is not important here at all it just "remove" empty strings
$converted = array_map('converter', array_filter(explode('u', $str)));
$converted = join('', $converted);

print $converted;

Just as a side note you OUGHT TO FIND a better strategy in order to split the unicode sequences. By "exploding" string by u char is somewhat ingenuo.

此外,我强烈建议您阅读 Armin Ronacher 的精彩博客文章,UCS vs UTF-8 as Internal String Encoding .

关于javascript - 将 Unicode Javascript 字符串转换为 PHP utf8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35153225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com