我实际上正在寻找一个可以像 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/