JS中的日文字符转义和解码

时间:2013-09-06 10:54:55

标签: javascript

我试图编写一个 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格式错误

我们如何逃避日文字符,将其正确解码?

感谢任何帮助!

http://jsfiddle.net/hcU9C/

2 个答案:

答案 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)

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

如果您希望使用escape进行编码,请使用unescape函数代替decodeURIComponent函数来解码字符串。

MDN页面

  

对于非ASCII,转义和unescape函数无法正常工作   字符并已被弃用。在JavaScript 1.5及更高版本中,使用   encodeURI,decodeURI,encodeURIComponent和decodeURIComponent。

     

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