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

是否可以用javascript将阿拉伯语字符编码为ISO-8859-6或Windows-1256?,javascript,Javascript,实际上,我正在寻找一个javascript函数(或库),它可以像Java的Java.net.URLEncoder.encode(字符串s,字符串编码)一样工作但如果这不可能,您如何将阿拉伯字符编码为单字节编码的阿拉伯字符集,如ISO-8859-6或Windows-1256。不幸的是,当使用encodeURIComponent时,JavaScript仅支持UTF-8编码。(严格来说,这是正确的做法,因为使用不同字符集进行URL编码在技术上是可行的,但不是标准化的) 如果您希望浏览器进行编码,那么(

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

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

如果您希望浏览器进行编码,那么(AFAIK)使用AJAX是不可能的

浏览器通过
接受字符集
的形式执行此操作:

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

(未测试。从中编码)

我希望有人尽快给我们答案!JavaScript没有类似的内置功能,因为它通常只用于读取或写入文件,JS无法执行,任何HTTP通信都会自动转换。你想做什么?为什么需要在字符集编码之间转换?要求是使用来自javascript的HTTP Servlet请求(Get)中使用单字节编码的阿拉伯语字符。是否有任何东西可以满足此要求?UTF-8(多字节)目前不是一个选项。这是一个解释良好、构造良好的答案。如果有“标准”就好了使用不同的字符集进行URL编码的方法,但我认为编写我们自己的编码器不会有问题。谢谢。
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);