java开发中中文乱码总结

1.jsp页面内容显示乱码

这种乱码原因很简单,一般的工具或解码程序对中文字符解析时采用默认的解码方式:

<%@ page contentType="text/html; charset=ISO-8859-1"%>

我们只需修改其编码方式即可,如下:

<%@ page contentType="text/html; charset=UTF-8"%>

字符集:UTF-8 > GBK > GB2312

2.jsp 与 Servlet 间跳转出现中文乱码

2.1: method="Post"

jsp 中form 表单的 ation="XxxServlet",method="Post"时,提交表单后往往发现中文的属性值在 Servlet 中获取后变乱码。

此时需要定位到 doPost() 方法,首先在方法内首行加上如下 code:

request.setCharacterEncoding("UTF-8");

意思是设置 request 的编码为 "UTF-8",一般与 jsp 页面一致

然后,再添加 code:

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html;charset=UTF-8");

意思是设置 response 的编码为 "UTF-8",即 Servlet 回传 jsp 时的编码,上面两段用其一即可,保持一致是关键。

2.2:method="Get"

jsp 中form 表单的 ation="XxxServlet",method="Get"时,提交表单后往往发现中文的属性值在 Servlet 中获取后变乱码。

此时需定位的 tomcat 的安装目录 %TOMCAT%/conf/server.xml 文件

寻找如下代码片段:

1.    <Connector port="8080" protocol="HTTP/1.1"

2.      maxThreads="150"

3.      connectionTimeout="20000"

4.      redirectPort="8443"

5.         URIEncoding="UTF-8"/>

手动加上URIEncoding="UTF-8"

3.    javascript url 传递参数中文乱码问题

方案一

html页面:

function testOne() {
           var url = "testTwo.action?expr="+你好;

window.location.href = encodeURI(url);

}

后台java代码:

String expr = new String(

request.getParameter("expr").getBytes("ISO-8859-1"),"UTF-8");

方案二

html页面:

function testTwo() {

var url = "testTwo.action?expr="+你好;

window.location.href= encodeURI(encodeURI(url));

}

后台java代码:

String expr = java.net.URLDecoder.decode(lrequest.getParameter("expr") , "UTF-8");

如果用的是weblogic服务器的话,用方案二是可以解决的(我的weblogic的版本是weblogic 9.2的),方案一解决不了。

如果是tomcat服务器的话,这两个方案都可以;也可以在传递参数不处理,后台用

String expr = new String(request.getParameter("expr").getBytes("ISO-8859-1"),"UTF-8");

也是可以的。

4.     Java web下载文件文件名乱码

第一种: 设置

response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));

这里将文件名编码成UTF-8的格式,就不会出现URL出错了。IE6下注意中文文字不能超过超过17个。

第二种:设置

response.setHeader( "Content-Disposition", "attachment;filename="  + new String( fileName.getBytes("gb2312"), "ISO8859-1" ) );

将中文名编码为ISO8859-1的方式。不过该编码只支持简体中文.

按照上诉方式,可以综合一下两种方式解决绝大部分中文问题。

fileName = URLEncoder.encode(fileNameSrc,"UTF-8");

if(fileName.length()>150)//解决IE 6.0 bug {

fileName=new String(fileNameSrc.getBytes("GBK"),"ISO-8859-1");

response.setHeader( "Content-Disposition", "attachment;filename="  + fileName);

}

时间: 2024-12-14 18:52:03

java开发中中文乱码总结的相关文章

201671010127 2016—2017—2 Java怎样解决Java程序中中文乱码的问题。

这是本次第二次分享新手在编程中遇到的问题,相信很多Java新手和我一样,在Java编程中会遇到中文乱码的情况,下面我就给大家分享我遇到问题和解决问题的具体过程. 我先用Notepad++写了一个如下的程序: 在第一次编译运行中出现如下的结果: 通过查阅资料,原来是由于编码格式不一致引起的,汉字的编码应该用国标编码GBK,解决此问题可以用以下方法: 1.在集成环境下,可以选择编码格式为UTF-8格式. 2.在dos里面编译时,可以将编码格式加上去 javac -encoding gbk Text.

IDEA2014开发Java程序以及中文乱码问题的解决

IDEA2014开发Java程序以及中文乱码问题的解决 我们知道IDEA是可以很强大的集成开发环境,不仅可以开发Web工程,还可以开发Java运行程序,但是在进行Java开发之前,我们需要对IDEA做一些配置工作.步骤如下: 下载IDEA2014下载地址,过期私聊我(http://pan.baidu.com/s/1jIfbtdW) 下载JDK64位机(http://download.oracle.com/otn-pub/java/jdk/8u77-b03/jdk-8u77-windows-x64

java开发中的那些事(6)------一次ajax调用中的问题

这个周末就要到这次开发任务的结尾了,不过也到这时候了,才发现用起来比较顺手了,前几次项目中也有过啊,说起来实实在在用过的才3个项目,就分别用了不同的,着实有些痛苦啊,初学阶段的jsp+servlet还算是初学,可这后面的loushang和ssh2是让我欢喜让我忧啊,高兴的是框架的魅力让我情不自禁,可这样的框架我啥时候才能自己组的那么完善,甚至现在用起来还磕磕绊绊的.总结下这次的大收获的话,一方面是这个框架,另一方面的话就是ajax和json了,这个在我来说是比较陌生的地方,虽然现在我可以用,但原

web开发中的乱码问题

乱码问题的根源:(以web程序为例子,eclipse来查看编码,设置UTF-8) 解决方案:所有文件或者字符串的编码方式一致 (1)查看web页面文件的编码方式:        (2)web页面的<head>写上          <meta http-equiv="content-type" content="text/html; charset=UTF-8"> (3)特别注意web里面的<form>提交时submit,带有中文

java开发中的那些事(1)-------关于ORA00604和ORA12705

******************************有关myEclipse和oracle连接中出现的一个问题********************************* 界面拿给用户提意见,然后又是修修改改,总算是审批通过,下一步就要开始编码了,结果一出手就碰到了问题,先来展示一下问题所在: 在hibernate反向生成的时候,突然蹦出了这两个异常提示ORA-00604和ORA12705,让我很是纠结,然而其实在这之前还蹦出来Driver can't find的异常,然后我们来分析

java开发中的那些事(5)--------一点经历,败给2分钟的2个小时

特意记下这个经历,这个让我感慨万千又斗志昂扬的一次经历,这是经验,也是生活. 故事的始末是这样的,先给大家上几句代码,现在身在家中,只能凭记忆敲打几行,大致意思倒不会错: {field:'code',align:'center'} {field:'btfid',align:'center',hidden:'true', formatter:function(value,row,rowIndex){ return "<a href="javascript:void(0)"

java开发中使用的工厂设计模式

package gongchangdemo; /* * 在java开发中使用较多的一种设计模式:工厂模式:就是一个过渡端 * 通过过度端来取得接口的实例化对象,这个过渡端就称为工厂factory * 这个模式主要是为了解决修改子类,必须要修改main方法,而main方法主要是客户端,客户端 * 经常变来变去不太好,就引进:工厂模式 */ public class gongchangdemo { public static void main(String args[]) { //getinsta

完整java开发中JDBC连接数据库代码和步骤

完整java开发中JDBC连接数据库代码和步骤 JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String  className)实现. 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(Class

java开发中截取上传文件的文件名和后缀名

java开发中截取上传文件的文件名和后缀名 /** * Return the extension portion of the file's name . * * @see #getExtension */ public static String getExtension(File f) { return (f != null) ? getExtension(f.getName()) : ""; } public static String getExtension(String f