使用ajax的xmlHttp.send()传中文存入数据库出现乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ajax的xmlHttp.send()传中文存入数据库出现乱码相关的知识,希望对你有一定的参考价值。

今天测试一个ajax小应用的时候发现ajax POST出去的数据成乱码。我的页面编码前台后台都是GBK,tomcat中设置了过滤器也是使用GBK.
在我不改变现有编码的情况下可以解决乱码问题吗?
我使用的是oracle9i数据库,编码为AL32utf-8

参考技术A 我用GBK没有测试成功,不管怎么设也没用.
ajax中如果用get提交,把url和参数经过encodeURI编码后再提交,获取时用utf-8编码.
如果用post提交,获取时用utf-8编码,这两种方式都可以解决乱码.
我就是用上面两种方式提交.

如果楼主用(GBK解决了乱码,也请和我分享一下,谢谢!)
参考技术B 你数据库传入参数设置了吗? 使用mysql 吗?

那可以在 Servlet 中指定一下 request 或 responce 的字符集。

AJAX xmlhttp.send 参数

【中文标题】AJAX xmlhttp.send 参数【英文标题】:AJAX xmlhttp.send parameters 【发布时间】:2011-08-16 10:28:28 【问题描述】:

我创建了一个 AJAX 函数,当调用它时它会改变特定按钮的颜色。但是,我只设法以静态方式执行此操作,这意味着我将发送的值手动发送到相应的 php 脚本。 我想要的是通过我的 html 正文使用一些参数调用该函数,然后这些参数应该通过 xmlhttp.send 方法传递。我试过了,但它不起作用。 例如,调用下面的函数 ajaxFunction() 可以正常工作(它将传递两个参数 x=0 和 t=1)

    $ function ajaxFunction()  ... xmlhttp.open("POST","example.php",true); 
xmlhttp.onreadystatechange = handleServerResponse;
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send("x=0&t=1");

但是当我尝试使用一些参数调用函数时 (ajaxFunction(0,1) 那么如何将这些值放入 xmlhttp.send 方法中?

有什么想法吗?

还是谢谢。

【问题讨论】:

跟我的问题一模一样!...谢谢! 【参考方案1】:

你的意思是:

function ajaxFunction(arg0, arg1) 
    // ... new + open + setRequestHeader
    xmlhttp.send('x=' + encodeURIComponent(arg0) + '&t=' + encodeURIComponent(arg1));

【讨论】:

以上是关于使用ajax的xmlHttp.send()传中文存入数据库出现乱码的主要内容,如果未能解决你的问题,请参考以下文章

关于AJAX 第三篇

AJAX - 向服务器发送请求

Ajax 向服务器发送请求 | AJAX 教程

AJAX - 向服务器发送请求

JQuery ajax-向服务器发送请求的方法

关于AJAX 第四篇