在用Ajax交互数据时,我们会发现发送中文字符时,GET方法运行正常,但是POST方法就会出现乱码。这是因为异步对象在处理返回的responseText的时候是按照UTF-8的编码方式进行编码的。
解决方法是在发送数据时对数据进行编码处理,然后对返回的responseText进行对应的解码获得正确的字符。在JavaScript中,推荐使用encodeURI()进行编码,而用decodeURI()进行解码。需要对发送的数据进行两次编码,对返回的数据进行一次解码。下面贴一个示例作为提示:
//编码发送的数据
encodeURI(encodeURI(queryString));
//解码接收的数据,xmlHttp是异步对象
decodeURI(xmlHttp.responseText);
经过两次编码和一次解码,POST乱码的问题就解决了。