一个转编码的问题servlet 所有用到编码的地方必须是一致的,比如jsp、数据库== 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数据库的编码方式不是utf-8啊,数据库也要设置的,具体百度,很多 是的,这个我所有的都改掉了。这个错误让我很费解 String name=request.getParameter("username");得到的name值为正常的这个应该是过滤器得为作用,然后用String newName=new String(name.toString().getBytes(),"utf-8")转码就发生乱码了。 数据库编码已经修改过来了,取值到jsp页面没有问题 这个错误就是jsp提交到servlet 出错 String name="张三";//获取默认编码System.out.println(System.getProperty("file.encoding")); //.getBytes()这样不带参数默认是以平台的默认编码进行编码String newName=new String(name.toString().getBytes(),"utf-8");//.getBytes("你的编码")这里是UTF-8,这样才会是正确,其实这里根本不需要转码System.out.println(newName); 这种问题最好是统一jsp,.java,与数据库的编码方式。 public static void main(String[] args) { System.out.println(System.getProperty("file.encoding")); //UTF-8 ---系统默认的编码方式 String str = "汉字"; System.out.println(str); //汉字 --- try { String str_gbk = new String(str.getBytes("UTF-8"),"GBK"); //同String str_gbk = new String(str.getBytes(),"GBK System.out.println(str_gbk); //姹夊瓧 ---将编码方式转换GBK后,控制台打印为乱码 String str_utf8 = new String(str_gbk.getBytes("GBK"),"UTF-8"); System.out.println(str_utf8); //汉字 ---将UTF-8转换为GBK再转换为UTF-8,控制台显示没有问题 } catch (UnsupportedEncodingException e) { e.printStackTrace(); } }我发现字符编码与系统平台默认的编码方式不一致时,控制台打印的就是乱码。(我不知道原因)你用System.out.println(System.getProperty("file.encoding"));看一下你的平台默认的编码方式是不是不是UTF-8。 从你的代码上看,是输出的编码和控制台选择的不一致选择你要运行的代码,右击Run --> Run Configurations --> common我猜,你的控制台默认编码是iso-8859-1 很多地方需要控制编码规则。页面,工程,TOMCAT容器,数据库,等等。都统一源码。 改成这样试试String newName=new String(name.toString().getBytes(“UTF-8”),"ISO8859-1"); 100分求线程池示例 JSP页面使用img标签占用tomcat的性能问题 请问,如何设置tomcat,遇到excel文件不用ie打开而是保存 jsp页面错误 在线等 URI和URL的区别~~ JSP 如何去除生成的 HTML中的空格和换行? Struts iterate的问题 关与JAVA与Lotus做OA哪个设计模式会比较好 关于数据库的修改,添加的问题 谁有实现文件上传得的源代码,用javabean做的,一定给分 spring mvc 配置后,web中的html页面报404 求助大神java架构选择
是的,这个我所有的都改掉了。这个错误让我很费解 String name=request.getParameter("username");得到的name值为正常的这个应该是过滤器得为作用,然后用String newName=new String(name.toString().getBytes(),"utf-8")转码就发生乱码了。
数据库编码已经修改过来了,取值到jsp页面没有问题 这个错误就是jsp提交到servlet 出错
//获取默认编码
System.out.println(System.getProperty("file.encoding"));
//.getBytes()这样不带参数默认是以平台的默认编码进行编码
String newName=new String(name.toString().getBytes(),"utf-8");
//.getBytes("你的编码")这里是UTF-8,这样才会是正确,其实这里根本不需要转码
System.out.println(newName);
System.out.println(System.getProperty("file.encoding"));
//UTF-8 ---系统默认的编码方式
String str = "汉字";
System.out.println(str);
//汉字 ---
try {
String str_gbk = new String(str.getBytes("UTF-8"),"GBK");
//同String str_gbk = new String(str.getBytes(),"GBK System.out.println(str_gbk);
//姹夊瓧 ---将编码方式转换GBK后,控制台打印为乱码 String str_utf8 = new String(str_gbk.getBytes("GBK"),"UTF-8");
System.out.println(str_utf8);
//汉字 ---将UTF-8转换为GBK再转换为UTF-8,控制台显示没有问题 } catch (UnsupportedEncodingException e) {
e.printStackTrace();
} }
我发现字符编码与系统平台默认的编码方式不一致时,控制台打印的就是乱码。(我不知道原因)
你用System.out.println(System.getProperty("file.encoding"));看一下你的平台默认的编码方式是不是不是UTF-8。
选择你要运行的代码,右击Run --> Run Configurations --> common
我猜,你的控制台默认编码是iso-8859-1
页面,工程,TOMCAT容器,数据库,等等。都统一源码。