我无法理解为什么我无法从服务器答案中获得正确的ISO-8859-1 charstet.作为遗留代码的工作,我几乎不能改变页面上的字符集编码.
我使用了JQuery调用
$.post("server-side-code", {t:ctext, i:ioff, sid:sessionid},
function(data, status) {
$('#chk').append(data);
});
Run Code Online (Sandbox Code Playgroud)
发布使用javascript创建的textarea值:
<form accept-charset='ISO-8859-1' method='post'>
<textarea cols='40' rows='8' id='commento'></textarea><br>
<input type='button' value='invia' id='submit'></form>
Run Code Online (Sandbox Code Playgroud)
处理请求的服务器端脚本在其顶部声明:
text/html; charset=ISO-8859-1
Run Code Online (Sandbox Code Playgroud)
所以,老实说,我无法弄清楚我应该在编码方面声明什么.尽管如此,当将服务器答案放在HTML元素中时,重音字符"àèéìòù"会反弹为:"ÃÃÃÃ"ÃÃÃ"Ã"
源保存为ascii.尝试执行此操作以对要发布的变量进行基本的Html编码无法解决:
ctext = escapeHTML(ctext);
function escapeHTML (str)
{
var div = document.createElement('div');
var text = document.createTextNode(str);
div.appendChild(text);
return div.innerHTML;
};
Run Code Online (Sandbox Code Playgroud)
有些想法?
谢谢!
我在chrome扩展程序上使用jQuery发送一个AJAX POST请求,但数据没有按预期到达,重音字符变得格格不入.
文字"HÄGERSTEN"变成"H"GERSTEN".
该文本在控制台等中显示正常,只有通过AJAX才能显示如上所述的其他页面.我的AJAX调用是基本的,我通过jQuery $ .ajax发送数据对象.我已尝试使用和不使用contentType,UTF-8和ISO-8859-1.没有不同.
这是我进行AJAX调用的方式:
var newValues = {name: 'HÄGERSTEN'}
$.ajax({
url: POST_URL,
type: 'POST',
data: newValues,
success: function() ...
});
Run Code Online (Sandbox Code Playgroud)
该newValues
对象具有更多值,但我从表单中检索它们.但是,我已尝试手动指定这些值newValues['name'] = 'ÄÄÄÄ';
,但仍会导致同样的问题.
我发送AJAX的页面的原始表单元素包含属性accept-charset="iso-8859-1"
.也许这很重要.
目标网站正在使用Servlet/2.5 JSP/2.1
.只是因为它可能会有所作为.
我认为这是一个编码问题,因为我知道这应该是因为Chrome扩展要求脚本文件是UTF-8编码的,这可能与插件运行的网站和目标AJAX页面(同一网站)冲突正在使用ISO-8859-1编码,但我不知道如何处理它.我已经尝试了几种解码/编码UTF-8到ISO-8859-1和其他技巧的方法,但没有成功.
我已经尝试使用encodeURIComponent
我的值,这只会使它们显示在显示我通过POST发送的值的表单上,例如H%C3%84GERSTEN
.
我无法访问网站服务器,无法告诉您这是否是他们身边的问题,但我不这么认为.
UPDATE
现在我已经了解POST数据必须以UTF-8发送!那么转换不是问题吗?
javascript ajax jquery google-chrome google-chrome-extension
我有一个类似的问题: jQuery AJAX 字符编码,但其中提到的任何解决方案都适合我。
\n\n我制作了三个简单的文件来显示问题:
\n\nPHP 文件:
\n\n//prueba.php\necho "n\xc2\xba one two \xe2\x82\xac \xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba";\n
Run Code Online (Sandbox Code Playgroud)\n\nJavaScript 文件(我使用 JQuery)
\n\n//Javascript file\n function prueba() {\n $.ajax({\n type: "GET",\n contentType: "application/x-www-form-urlencoded;charset=ISO-8859-1",\n url: "prueba.php",\n }).done(function( data ) {\n $("#prueba").text(data); \n //$("#prueba").html(data); //It does the same encoding error \n });\n }\n
Run Code Online (Sandbox Code Playgroud)\n\n** HTML 文件:**
\n\n<html>\n <head>\n <title>E-COMMERCE</title>\n <meta content="text/html; charset=iso-8859-1" http-equiv=Content-Type>\n <meta http-equiv="X-UA-Compatible" content="IE=edge" />\n\n <script src="javascript/jquery.js" type="text/javascript"></script>\n <script src="javascript/javascript.js" type="text/javascript"></script>\n </head>\n\n <body>\n <a href="javascript:prueba()">Prueba</a>\n <div id="prueba"></div>\n </body>\n\n</html>\n
Run Code Online (Sandbox Code Playgroud)\n\n …