javascript - 是否可以在 javascript 中将阿拉伯字符编码为 ISO-8859-6 或 Windows-1256?

标签 javascript

我实际上正在寻找一个可以像 Java 的 java.net.URLEncoder.encode(String s, String encoding) 一样工作的 javascript 函数(或库),但如果那不可能,你怎么能将阿拉伯字符编码为单字节编码的阿拉伯字符集,如 ISO-8859-6 或 Windows-1256。

最佳答案

不幸的是,JavaScript 在使用 encodeURIComponent 时仅支持 UTF-8 编码(严格来说这是正确的做法,因为使用不同字符集的 URL 编码在技术上是可行的,但不是标准化的)。

如果您希望浏览器进行编码,那么(据我所知)AJAX 是不可能的。

浏览器以带有 accept-charset 的形式执行此操作:

<form action="/some-url" method="get" accept-charset="ISO-8859-6">
  <input name="test">
  <input type="submit">
</form>

因此您可以使用 JavaScript 生成这样的表单,将其提交到 iframe,然后读取其内容。

如果那不是一个选项,我想您需要编写自己的 URI 编码器。像这样:

var iso_8859_6_encoding = {"ء": "C1", "آ": "C2", "أ": "C3", "ؤ": "C4" /* etc. */};

function encodeURIComponentWithCharset(str, charset) {
  var result = "";
  for (var i = 0, len = str.length; i < len; i++) {
    var char = str.charAt(i);
    if (str.charCodeAt(i) < 128) {
       result += encodeURIComponent(char);
    } elseif (charset[char]) {
       result += "%" + charset[char];
    } else {
       // Drop undefined chars
    }
  } 
  return result;
}

encodeURIComponentWithCharset("your string", iso_8859_6_encoding);

(未经测试。编码来自 http://en.wikipedia.org/wiki/ISO-8859-6)

关于javascript - 是否可以在 javascript 中将阿拉伯字符编码为 ISO-8859-6 或 Windows-1256?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5484928/

相关文章:

javascript - Redux 操作未触发 reducer

javascript - 获取 API 无法加载文件 :///C:/Users/woshi/Desktop/P5/p5/JSON/birds. json。对于 CORS 请求,URL 方案必须是 "http"或 "https"

javascript - ckeditor: "a is undefined"

javascript - 使用 jquery,如何根据 TR 属性对表中的行重新排序?

javascript - 使 .local 解析为 IP 地址和端口 (mdns)

javascript - 创建全屏背景图片,但仍允许用户向下滚动

javascript - slider 的样式在 IE 中无法正常工作

javascript - 如何管理争论

javascript - 从异步函数返回错误和数据的更好语法

javascript - 使用 javascript 设置样式值时的数字或字符串