javascript - UTF8解码汉字

标签 javascript node.js express character-encoding

我正在使用node.js 和express 构建一个API,将中文字符转换为其拼音(拼音),但我遇到了一些utf8 解码/编码问题。我对此 API 的 PHP Curl 请求对字符进行编码,如下所示:

你好 (nǐ​hǎo) => ä½ å¥½

...所以我必须在我的 Node 应用程序中对它们进行解码。我正在使用以下功能:

function decode_utf8(s) {
    return decodeURIComponent(escape(s));
}

在大多数情况下它工作得很好。但是,我注意到一些奇怪的行为。这里有两个输入,escape()之后的值和decodeURIComponent()之后的值:

你好 (nǐ​hǎo): ä½ å¥½ => %E4%BD%A0%E5%A5%BD => 你好
你 (nǐ​): ä½ => %E4%BD => URIError: URI malformed

第一个 (nǐ​hǎo) 有效,但是当仅使用两个字符中的第一个 (nǐ​) 时,它会给我一个 URIError?这怎么可能? decodeURIComponent() 函数的输入与 nǐ​部分完全相同,但仅在与另一个字符组合时才有效。这里出了什么问题?

最佳答案

您尝试解码的字符串无法解析为有效的 utf8。您的 PHP Curl 请求出现问题,因为它没有正确编码 你 (nǐ​)。编码值百分比应为 你 => %E4%BD%A0

关于javascript - UTF8解码汉字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60014517/

相关文章:

javascript - THREE.js 透明度和 EffectComposer

javascript - 文件显示在“源”选项卡中但不在“网络”中

javascript - 单击时更改 div 的样式,并在单击另一个 div 时将其更改回

node.js - 如何从 node.js 干净地关闭 mongodb?

html - 使用express获取node.js中选定的选项值

javascript - Android 键盘似乎可以切换 jquery .slideToggle,有人知道解决方法吗?

node.js - 如何防止我的 Node js 代码被盗?

node.js - node.js 中的 header - 套接字 io 资源解释为脚本,但使用 MIME 类型 text/plain : 进行传输

javascript - Angular +图像上传。将表单数据传输到后端时遇到问题

node.js - 如何在使用 passport-google-oauth 成功验证后重定向到原始页面