SqlServer中文乱码(其他数据库也可参考)


我流程里,使用的是gbk,或gb2312编码格式,utf-8还没试过。

1)jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

//1.下面这句是解决乱码的关键之一,下面这句不仅影响中文,还影响布局,我之前布局时用utf-8,现在又改为gb2312,放在IE8里布局乱掉,firefox里正常。

<%@page contentType="text/html; charset=gb2312" %>

<%request.setCharacterEncoding("GB2312"); %>


2)服务器端,servlet里:

把从界面获得的参数,转成gb2312,因为浏览器默认传参数的编码是iso-8859-1

String searchW = req.getParameter("searchWord");
//2.下面这句是解决乱码的关键之一
String searchWord = new String(searchW.getBytes("iso-8859-1"),"gb2312");

下面这两句我做了测试,加了和没加只要上面的步骤正确,都可以显示中文。不过我还是加了

req.setCharacterEncoding("GB2312");
resp.setContentType("text/html;chartset=GB2312");


3)数据库端,把数据库编码也设为gbk.


我今天也碰到了一个头疼的问题:如果把chartset utf-8改为gb2312,IE8里的网页布局就会有点乱。firefox还是正常,如果不改为gb2312中文数据又会出现乱码。所以页面的编码,在IE8里还会影响到布局。(其他IE版本没做测试)

<%@page contentType="text/html; charset=utf-8" %><!-- This sentence decide the css and the unreadable code-->

后来我把,所有的css文件,都保存为gbk的编码格式,把css里的中文乱码都删掉,在IE8中的布局才恢复正常。


附带查看操作系统编码的Java程序:

public classShowSystemDefaultEncoding {

public static void main(String[]args) {

String encoding =System.getProperty("file.encoding");

System.out.println(encoding);

}}



你可能感兴趣的:(sqlserver)