我正在使用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/