日语字符在 JS 中的转义和解码

Japanese Characters Escape and Decoding in JS

本文关键字:转义 解码 字符 JS 日语      更新时间:2023-09-26

我试图编写一个转日语字符的JavaScript方法。

var esc_str=escape("チャイナモバイル•リミテッド");
var dec_str=decodeURIComponent(esc_str);
//%u30C1%u30E3%u30A4%u30CA%u30E2%u30D0%u30A4%u30EB%u2022%u30EA%u30DF%u30C6%u30C3%u30C9 is dec_str as per debugger- console log.
console.log(dec_str);

解码时,我收到以下错误:

未捕获的 URIError:URI 格式不正确

我们如何转义日语字符,以正确解码?

任何帮助不胜感激!

http://jsfiddle.net/hcU9C/

您链接到的页面显示

注意:escape() 函数不应用于对 URI 进行编码。请改用 encodeURI() 函数。

这似乎有效:

encodeURIComponent("チャイナモバイル•リミテッド");
"%E3%83%81%E3%83%A3%E3%82%A4%E3%83%8A%E3%83%A2%E3%83%90%E3%82%A4%E3%83%AB%E2%80%A2%E3%83%AA%E3%83%9F%E3%83%86%E3%83%83%E3%83%89"
decodeURIComponent("%E3%83%81%E3%83%A3%E3%82%A4%E3%83%8A%E3%83%A2%E3%83%90%E3%82%A4%E3%83%AB%E2%80%A2%E3%83%AA%E3%83%9F%E3%83%86%E3%83%83%E3%83%89")
"チャイナモバイル•リミテッド"

理想情况下,您应该使用encodeURIencodeURIComponent对字符串进行编码,并分别使用decodeURIdecodeURIComponent来解码字符串,因为escapeunescape已被弃用。

仍然,如果您希望使用escape进行编码,请使用unescape函数而不是decodeURIComponent函数来解码字符串。

从MDN页面,

转义

和取消转义功能对于非 ASCII 无法正常工作 字符,并已弃用。在 JavaScript 1.5 及更高版本中,使用 encodeURI、decodeURI、encodeURIComponent和decodeURIComponent。

转义和

取消转义函数允许您对字符串进行编码和解码。 转义函数返回参数的十六进制编码 ISO 拉丁字符集。取消转义函数返回 ASCII 指定的十六进制编码值的字符串。