日语字符在 JS 中的转义和解码
Japanese Characters Escape and Decoding in JS
我试图编写一个转义日语字符的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")
"チャイナモバイル•リミテッド"
理想情况下,您应该使用encodeURI
或encodeURIComponent
对字符串进行编码,并分别使用decodeURI
或decodeURIComponent
来解码字符串,因为escape
和unescape
已被弃用。
仍然,如果您希望使用escape
进行编码,请使用unescape
函数而不是decodeURIComponent
函数来解码字符串。
从MDN页面,
转义和取消转义功能对于非 ASCII 无法正常工作 字符,并已弃用。在 JavaScript 1.5 及更高版本中,使用 encodeURI、decodeURI、encodeURIComponent和decodeURIComponent。
转义和取消转义函数允许您对字符串进行编码和解码。 转义函数返回参数的十六进制编码 ISO 拉丁字符集。取消转义函数返回 ASCII 指定的十六进制编码值的字符串。
相关文章:
- 在JavaScript中输出转义字符
- 转义符不能与innerHTML一起使用
- Rails 3.2 js.erb文件转义js
- 在文本区域POST后解码JSON
- 转义在jsp's脚本
- Json字符串可以'当字符串末尾有“'时,t解码;
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- 使用Jinja2的JavaScript转义字符串
- 将c#视图模型转换为javascript模型时转义HTML标记
- Rails:如何在浏览器中显示动态html内容,而不会对其进行转义,也不会引起XSS攻击
- 删除单引号字符转义
- 从Base64 Ionic编码和解码图像
- 需要使用Java编码/转义HTML字符串,并在JavaScript中解码HTML字符串
- 解码或转义字符串中的十六进制代码编号
- 日语字符在 JS 中的转义和解码
- 使用转义的unicode(5个字符)解码字符串
- 我如何解码转义unicode javascript代码在Python
- 如何正确地转义数据与javascript查询字符串在PHP中解码
- 用javascript解码转义的西里尔字母
- 无法解码包含日文文本的javascript转义字符串