我正在尝试从<textarea>
获取值并通过XMLHttpRequest将其传递到将内容添加到数据库的PHP页面。
但是,当它到达数据库时,“åæø”字符将转换为“Ã¥Ã|Ô。
我搜索过高和低并尝试更改为UTF-8,尝试使用htmlentities()
/ htmlspacialchars()
等JavaScript版本,但无论我尝试做什么,结果都是总是一样。
我的页面设置为iso-8859-15,同样是请求的requestType。
因为我在工作中没有太多使用Ajax,所以我从网上剪下了设置程序。它看起来像这样:
var page_request = false;
var contentType = "application/x-www-form-urlencoded;charset=iso-8859-15";
if (window.XMLHttpRequest)
{
page_request = new XMLHttpRequest();
}
// If the Browser is Internet Explorer
else if (window.ActiveXObject)
{
try
{
page_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
page_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
}
else
{
return false;
}
page_request.open('POST', url, true);
page_request.setRequestHeader("Content-Type", contentType);
page_request.send(query);
但是,在接收端和数据库中的PHP文件中,将转换特殊字符。
非常感谢任何帮助!我花了大部分时间试图解决这个错误......
答案 0 :(得分:1)
你的charset delcaration撒谎。说内容是在ISO中并不神奇地使它成为ISO。
您的query
变量似乎采用UTF-8编码。这是可以预料到的,因为Javascript字符串总是Unicode,并且像encodeURIComponent()
这样的函数(正确格式化GET和POST请求所需的)使用UTF-8。
恕我直言,最好的办法就是永远停止使用ISO编码。
如果你还不能这样做,你需要自己在Javascript中序列化数据,或者在服务器上接收发布的数据时将UTF-8转换为ISO。
答案 1 :(得分:0)
您需要在encodeURIComponent
内容上使用textarea
。并使用UTF-8。
答案 2 :(得分:-2)
首先,这个网站支持语法高亮,但只有选择代码并点击小101 | 010符号。
其次,我会推荐ISO-8859-1,但我不是说保证会有效......