浏览器页面上输入的中文在数据库里是乱码,能改的地方都改了,郁闷中 先转换为utf-8,在写数据库前再转换为gbk 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String aaa=new String(aaa.getByte("GBK"),"8859_1"); 我不太明白你的意思,能否更清楚一点?在程序里吗?那样的话,要改的太多了,可否告诉我哪些配置一改,比如说tomcat里,或者是jdk里等等。听说tomcat启动文件里调用java之前可以设置编码方式,哪位曾经碰到过同样的问题? 写的是jsp,就是汉字编码问题。 根本就用不着进行编码转换,只不过默认得编码是utf-8你只要告诉java你要传输的内容的编码方式就可以了。做法:在你调用request.getParameter之前加上request.setCharacterEncoding("gb2312"); 楼上,我写过request.setCharacterEncoding("gb2312");,没用,有人建议我用filter,可是这里好想没人知道filter的用法,哎,那些星星都跑哪儿去了? 在web.xml中加入下面的内容,再不明白就看看tomcat里面的例子jsp-examples,注意使用的filter类。 <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>gb2312</param-value> </init-param> </filter> 还从来没有遇到过没有转不过来的编码问题:首先测试你的机子默认是什么编码,通过System.get...()获得,那么你的一般Java类里面的字符便是那个编码,然后在看数据库加入不加连接参数的各种编码方式,就是看传SQL进去时认什么编码,从数据库出来时什么编码,各种JDBC驱动有可能不同。然后的外能法宝就是在JSP页面里面根本不写什么PageEncoding什么的,因为默认是ISO-8859-1,那么编译成Servlet源码然后在Javac时,自然便是ISO-8859-1,但是加入在JSP页面里面调用其他的Java类里面的中文字符时,可能出现乱码,因为那些类使用系统默认的编码编译(GBK);当从客户端的form里面传来参数时,这是是ISO-8859-1编码,所以加入这时根据这些参数要组成SQL语句的话,那么必须将这些字符(Iso-8859-1)转化成数据库JDBC输入的编码方式(上面已经测出),当从数据库里面得到结果是,根据JDBC传出来的编码(上面已经测出)格式转化为iso-8859-1编码,那么现在所有的编码格式都为iso-8859-1编码了,当然不会出现乱码。看结果不能从控制平台看,因为他是使用系统默认编码(GBK),所以肯定是乱码了。要试出数据库驱动的编码,原则就是打开数据库的客户端,加入你的SQL insert命令正确(编码正确),那么客户端便可以正常显示(要信任客户端),加入没有的话,那么比较麻烦。我不知道是不是所有的JDBC驱动都支持可以配置参数,是不是规范呀?但是这个办法虽然试麻烦,但是假如理解了,那么便是“一不变应万变”,屡试不爽 如果你是以post方式提交到处理页面,在存入数据库之前要先转码 ,如:String abc=request.getParameter("....");abc=new String(abc.getBytes("iso8859-1"),"GBK");...................写入数据库....... 主要有两个地方一个是request的时候,java会自动转换,还有一个就是在与数据库交互的地方java中的字符是utf-8,所以你把交界处的转换一下 各种数据库驱动是不样的,这是特别注意的地方,必须先看你使用的JDBC驱动是怎么回事 public static String toChinese(String str) { try { if(str==null) { return null; } else { str=new String(str.getBytes("GBK"),"ISO8859_1"); return str; } } catch(Exception e){ return null; } } 奇怪,我明明结贴了,还说什么非零贴才能怎么怎么着。csdn的bug,不许扣我的信誉分。!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! JAVA eclipse上,一个完整的工程,删除一个和别的包有关联的包后,但项目提示没提示有错,?? 求一关于0、1比率的算法,急用!!!! 求 ajax 与后台频繁交互 效率 优化方案 关于面向接口编程的一点疑惑 小问题半天结帖 千言万语直击对象本质 JAVA SWING界面问题 急找杨雄星,UP有分. class设置问题:无法设置tools.jar 请问高手:如何通过局域网的IP地址获得该IP的用户名? 关于java界面编程时,总是很头痛控件的布局,不知道有什么更好的方法没有? 一个难题:有没有强行结束调用的方法?
你只要告诉java你要传输的内容的编码方式就可以了。
做法:
在你调用request.getParameter之前加上request.setCharacterEncoding("gb2312");
,没用,有人建议我用filter,可是这里好想没人知道filter的用法,哎,那些星星都跑哪儿去了?
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
首先测试你的机子默认是什么编码,通过System.get...()获得,那么你的一般Java类里面的字符便是那个编码,然后在看数据库加入不加连接参数的各种编码方式,就是看传SQL进去时认什么编码,从数据库出来时什么编码,各种JDBC驱动有可能不同。
然后的外能法宝就是在JSP页面里面根本不写什么PageEncoding什么的,因为默认是ISO-8859-1,那么编译成Servlet源码然后在Javac时,自然便是ISO-8859-1,但是加入在JSP页面里面调用其他的Java类里面的中文字符时,可能出现乱码,因为那些类使用系统默认的编码编译(GBK);当从客户端的form里面传来参数时,这是是ISO-8859-1编码,所以加入这时根据这些参数要组成SQL语句的话,那么必须将这些字符(Iso-8859-1)转化成数据库JDBC输入的编码方式(上面已经测出),当从数据库里面得到结果是,根据JDBC传出来的编码(上面已经测出)格式转化为iso-8859-1编码,那么现在所有的编码格式都为iso-8859-1编码了,当然不会出现乱码。看结果不能从控制平台看,因为他是使用系统默认编码(GBK),所以肯定是乱码了。要试出数据库驱动的编码,原则就是打开数据库的客户端,加入你的SQL insert命令正确(编码正确),那么客户端便可以正常显示(要信任客户端),加入没有的话,那么比较麻烦。我不知道是不是所有的JDBC驱动都支持可以配置参数,是不是规范呀?但是这个办法虽然试麻烦,但是假如理解了,那么便是“一不变应万变”,屡试不爽
String abc=request.getParameter("....");
abc=new String(abc.getBytes("iso8859-1"),"GBK");
...................
写入数据库.......
一个是request的时候,java会自动转换,还有一个就是在与数据库交互的地方
java中的字符是utf-8,所以你把交界处的转换一下
{
try
{
if(str==null)
{
return null;
}
else
{
str=new String(str.getBytes("GBK"),"ISO8859_1");
return str;
}
}
catch(Exception e){
return null;
}
}