我试图编写一个 escapes 日文字符的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);
decoding 时,我收到以下错误:
未捕获URIError:URI格式错误
我们如何逃避日文字符,将其正确解码?
感谢任何帮助!
答案 0 :(得分:5)
您链接的页面
注意:不应使用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")
"チャイナモバイル•リミテッド"
答案 1 :(得分:2)
理想情况下,您应该使用encodeURI
或encodeURIComponent
对字符串进行编码,并分别使用decodeURI
或decodeURIComponent
将字符串解码为escape
& unescape
已被弃用。
如果您希望使用escape
进行编码,请使用unescape
函数代替decodeURIComponent
函数来解码字符串。
从MDN页面
对于非ASCII,转义和unescape函数无法正常工作 字符并已被弃用。在JavaScript 1.5及更高版本中,使用 encodeURI,decodeURI,encodeURIComponent和decodeURIComponent。
escape和unescape函数允许您对字符串进行编码和解码。 escape函数返回参数的十六进制编码 ISO拉丁字符集。 unescape函数返回ASCII 指定十六进制编码值的字符串。