是否可以用javascript将阿拉伯语字符编码为ISO-8859-6或Windows-1256?
实际上,我正在寻找一个javascript函数(或库),它可以像Java的Java.net.URLEncoder.encode(字符串s,字符串编码)一样工作但如果这不可能,您如何将阿拉伯字符编码为单字节编码的阿拉伯字符集,如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编码在技术上是可行的,但不是标准化的) 如果您希望浏览器进行编码,那么(
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);