如何将Javascript字符串转换为ISO-8859-1?
我正在写一个Chrome扩展,它与一个使用ISO-8859-1的网站一起工作。只是为了提供一些背景信息,我的扩展功能是通过添加一个更方便的帖子表单来加快在网站论坛上的发布速度。然后通过Ajax调用(使用jQuery)发送写入消息的textarea的值 如果消息包含类似于如何将Javascript字符串转换为ISO-8859-1?,javascript,utf-8,google-chrome-extension,iso-8859-1,transcoding,Javascript,Utf 8,Google Chrome Extension,Iso 8859 1,Transcoding,我正在写一个Chrome扩展,它与一个使用ISO-8859-1的网站一起工作。只是为了提供一些背景信息,我的扩展功能是通过添加一个更方便的帖子表单来加快在网站论坛上的发布速度。然后通过Ajax调用(使用jQuery)发送写入消息的textarea的值 如果消息包含类似于á的字符,则这些字符在发布的消息中显示为Ã。强制浏览器显示UTF-8而不是ISO-8859-1会使a正确显示 据我所知,Javascript使用UTF-8作为字符串,因此我的理论是,如果在发送字符串之前将其转换为ISO-8859-
á
的字符,则这些字符在发布的消息中显示为Ã。强制浏览器显示UTF-8而不是ISO-8859-1会使a
正确显示
据我所知,Javascript使用UTF-8作为字符串,因此我的理论是,如果在发送字符串之前将其转换为ISO-8859-1,应该可以解决我的问题。然而,在Javascript中似乎没有直接的方法来进行这种代码转换,而且我不能接触服务器端代码。有什么建议吗
我已尝试将创建的表单设置为使用iso-8859-1,如下所示:
var form = document.createElement("form");
form.enctype = "application/x-www-form-urlencoded; charset=ISO-8859-1";
var theLink = myLink.getAttribute("href");
而且:
var form = document.createElement("form");
form.encoding = "ISO-8859-1";
但这似乎不起作用
编辑:
问题实际上在于jQuery是如何对消息进行URL编码的(或是在编码过程中发生的事情),我告诉jQuery不要处理数据,然后自己处理,如下面的代码片段所示:
function cfaqs_post_message(msg) {
var url = cfaqs_build_post_url();
msg = escape(msg).replace(/\+/g, "%2B");
$.ajax({
type: "POST",
url: url,
processData: false,
data: "message=" + msg + "&post=Preview Message",
success: function(html) {
// ...
},
dataType: "html",
contentType: "application/x-www-form-urlencoded"
});
}
据我所知,Javascript使用UTF-8作为字符串
不,不
每个页面都在meta标记中定义了其字符集编码,就在头元素的下方
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
如果确实要转换目标字符集编码,请尝试以下操作
InternetExplorer
formElement.encoding = "application/x-www-form-urlencoded; charset=ISO-8859-1";
ELSE
formElement.enctype = "application/x-www-form-urlencoded; charset=ISO-8859-1";
或您应该提供一个函数,以Unicode字符集获取每个字符使用的数字表示形式。无论目标字符集编码是什么,它都可以工作。例如,Unicode字符集为\u00E1
alert("á without its Unicode Character Set numerical representation");
function convertToUnicodeCharacterSet(value) {
if(value == "á")
return "\u00E1";
}
alert("á Numerical representation in Unicode Character Set is: " + convertToUnicodeCharacterSet("á"));
你可以在行动中看到:
您可以将此作为指导原则(参见JavaScript转义)
添加到我如何实现jQuery功能的原始答案中
var dataArray = $(formElement).serializeArray();
var queryString = "";
for(var i = 0; i < dataArray.length; i++) {
queryString += "&" + dataArray[i]["name"] + "+" + encodeURIComponent(dataArray[i]["value"]);
}
$.ajax({
url:"url.htm",
data:dataString,
contentType:"application/x-www-form-urlencoded; charset=UTF-8",
success:function(response) {
// proccess response
});
});
var dataArray=$(formElement).serializeArray();
var queryString=“”;
对于(var i=0;i
它工作正常,没有任何头痛
关于,我有一个非常类似的问题。我需要使用JQuery传递一个URL参数来进行ajax调用,大多数情况下,参数值都包含重音符号 这两个页面都必须设置为charset=ISO-8859-1,javascript的函数:encodeURI、encodeURIComponent等。只使用UTF-8 我所做的是在原始页面中创建一个链接,包括没有任何编码的所有参数,比如:
var myLink = document.getElementById("myHiddenLink");
myLink.setAttribute("href", "México, Perú, María and any other words with accents and spaces");
然后将href值分配给一个变量,如下所示:
var form = document.createElement("form");
form.enctype = "application/x-www-form-urlencoded; charset=ISO-8859-1";
var theLink = myLink.getAttribute("href");
最后,“theLink”变量值被ISO-8859-1编码,一切正常。您是如何提交消息的(例如,AJAX代码失败的完整示例)?感谢您提供的信息性答案,我将其标记为正确的,尽管这并不是确切的解决方案。我的帖子没有提供足够的信息来说明真正的问题。(我是在头撞墙几个小时后才发现的)@Marcos Marin在C#的原始回答中添加了以下内容:
var myLink = document.getElementById("myHiddenLink");
myLink.setAttribute("href", "México, Perú, María and any other words with accents and spaces");
var theLink = myLink.getAttribute("href");