jsp页面加上<%@ page language="java" contentType= "text/html;charset=gbk" pageEncoding="gbk"%>servlet中也添加了
response.setCharacterEncoding("gbk");
request.setCharacterEncoding("gbk");myeclipse中编码设置也为gbk但当把汉字存入SQL Server数据库时确还是乱码(乱码为?,??),我把编码改成UTF-8,UTF-32,GB2312,ISO-8859-1等等都没解决。希望能得到高手的指导,谢啦
response.setCharacterEncoding("gbk");
request.setCharacterEncoding("gbk");myeclipse中编码设置也为gbk但当把汉字存入SQL Server数据库时确还是乱码(乱码为?,??),我把编码改成UTF-8,UTF-32,GB2312,ISO-8859-1等等都没解决。希望能得到高手的指导,谢啦
http://developer.51cto.com/art/200708/53612.htm
建议把所有编码设置成uft-8。
1 你说的哪些方法都是一些必须采取的措施,其实可以采用过滤器filter的,他的作用主要是过滤从JSP页面提交过来的中文编码。(例子么网上有很多,尤其是编码的过滤器很典型,你可以去找找我就不再给你写了。)
2 服务器端数据传输时候的编码这个其实可以靠setCharacterEncoding()搞定,但不建议采用GBK,至少我不喜欢用有的时候会出意想不到的错误,UTF-8比较好.
3 有的时候如果你采用流的话,这里也会引起编码问题,特别是如果你是用的是stream的话,原本的汉字会变成??,??这种东西。
4 如果你的数据又通过href传输的时候这里要特别进行编码的。
5 页面的编码也要特别注意,如果采用word、 DREAMWEAVER以及类似的软件,他们的编码都有附加的脚本之类的,不要直接拷贝过来用,中文会变成乱码。
我还是个新人想到就这些,与大家分享,如果有不对的地方还希望大虾们指正。
解决乱码问题 大部分也是在这几个地方去找原因
String str = new String (str1.getBytes("ISO-8859-1"))转换后再存入数据库就正常了,不是太明白,这样说来SQL Server数据库的编码方式是ISO-8859-1了,但像上面我说的那样将所有的都改为ISO-8859-1也不行。另外数据库的编码方式从哪看到啊
这是sql server的改编码的方式
public String GBK(String str){
String s="";
try{
s=new String(str.getBytes("ISO-8859-1"),"gb2312");
}catch(Exception e){}
return s;
}
然后接受参数时 GBK(request.getparameter(你的参数名));这个代码是实现编码转换的问题……如果你是在servlet里实现把参数传到数据库的则把这个方法放在前面就好了,如果是在jsp页面里实现参数传到数据库的则注意加<%! %>就可以了……(额……我的表达能力差,反正我都是这么用的如果你还不行那我也不知道了毕竟我不知道你具体框架是怎么样的……)