java接如mysql ,出来的中文数据是乱码

2024-12-18 00:21:45
推荐回答(4个)
回答1:

你做网页之前的准备工作就是统一编码。我一直都是utf-8.数据库是用的UTF-8,工作空间UTF-8,项目UTF-8,源代码的编写用的UTF-8,包括xml,jsp,配置文件等都是UTF-8,所有的网页页面编码是UTF-8,
如果出现了乱码,拿就只有一个地方:
request.setCharacterEncoding()
response.setCharacterEncoding()
response.setContentType()
(不过这个都是用在拦截器里的,)
如果你这样了,都还是乱码,那只有可能是你
request.setCharacterEncoding()
response.setCharacterEncoding()
response.setContentType()
的地方不对,要在最开始使用request,response的地方设置编码才有效,看看你设置编码的位子对不对。
API中有介绍,提到这几个方法的使用位置:

ServletResponse:

The setCharacterEncoding,
setContentType, or setLocale method must
be called before getWriter and before committing
the response for the character encoding to be used.
至于为什么,你懂得.

回答2:

存在db中的应该是gbk,
html中一般是utf8;
需要转码,而且要转换正确才行,自己弄多试几把才行。
有很多ssh组件,不必自己jdbc转码的

回答3:

编码换成UTF-8试试看。还可能是你的 res.setContentType("text/html;charset=GBK");
req.setCharacterEncoding("GBK");
这2句,从数据库拿出来编码一次,往客户端发又编码了一次,去掉一句试试看。

回答4:

换个浏览器试试。有编辑器问题, 操作系统问题