i网站制作,wordpress 页面位置,个人注册公司的利与弊,网站权限控制解决中文乱码 常见乱码问题分析JSP和Servlet的六种中文乱码处理方法 一 、 表 单 提 交 时 出 现 乱 码 #xff1a; \color{#7FFF00}{一、表单提交时出现乱码#xff1a;} 一、表单提交时出现乱码#xff1a; 二 、 超 链 接 时 出 现 乱 码 #xff08; 低 版 本 浏 览 器… 解决中文乱码 常见乱码问题分析JSP和Servlet的六种中文乱码处理方法 一 、 表 单 提 交 时 出 现 乱 码 \color{#7FFF00}{一、表单提交时出现乱码} 一、表单提交时出现乱码 二 、 超 链 接 时 出 现 乱 码 低 版 本 浏 览 器 不 行 − I E 6 \color{#7FFF00}{二、超链接时出现乱码低版本浏览器不行-IE6} 二、超链接时出现乱码低版本浏览器不行−IE6 三 、 重 定 向 时 出 现 乱 码 低 版 本 浏 览 器 不 行 − I E 6 \color{#7FFF00}{三、重定向时出现乱码低版本浏览器不行-IE6} 三、重定向时出现乱码低版本浏览器不行−IE6 四 、 浏 览 器 版 本 低 导 致 的 乱 码 \color{#7FFF00}{四、浏览器版本低导致的乱码} 四、浏览器版本低导致的乱码 五 、 返 回 浏 览 器 显 示 的 乱 码 \color{#7FFF00}{五、返回浏览器显示的乱码} 五、返回浏览器显示的乱码 六 、 修 改 T o m c a t 的 编 码 \color{#7FFF00}{六、修改Tomcat的编码} 六、修改Tomcat的编码参考1.解决中文乱码的几种解决方法2.java中文乱码问题解决方案整理 常见乱码问题分析 1、中文变成看不懂的字符 如果一串中文字符变成了一串看不懂的字符如“Ì Ô £ ¡Î Ò Ï²»¶ £ ¡”这种情况通常是编码字符集与解码时所用的字符集不一致所造成的。比如使用GBK编码如果使用ISO-8859-1解码的话结果就是这样。 2、一个汉字变成了一个问号 如果编码和解码的字符集都是一致的那么可以确定该字符编码不支持中文例如ISO-8859-1 3、一个汉字变成了两个问号 中文经过多次编码且其中有一次编码或者解码使用了不支持中文的字符集 JSP和Servlet的六种中文乱码处理方法 一 、 表 单 提 交 时 出 现 乱 码 \color{#7FFF00}{一、表单提交时出现乱码} 一、表单提交时出现乱码
在进行表单提交的时候经常提交一些中文自然就避免不了出现中文乱码的情况。对于表单来说有两种提交方式get和post提交方式所以请求的时候便有get请求和post请求。每种方式都有着不同的解决方法之所以出现乱码原因就在于get请求时其传递给服务器的数据是附加在URL地址之后的而post的请求时其传递给服务器的数据是作为请求体的一部分传递给服务器。这也就导致了对它们所产生的乱码的处理方式是不同的。
1、客户端的get请求 get请求提交时容器以容器的编码来编码如果用的tomcat默认的编码是iso-8859-1 (1) 在server.xml里面设置编码 或者 (2) 代码中插入如下语句
String name request.getParameter(name);
String strName new String(name.getByte(iso-8859-1),GBK);对于不同的请求方式解决乱码的问题也是不一样的。对于客户端的get请求来说服务器端要求不出现乱码解决这个问题稍微复杂一些需要用到String类型的构造函数 其中的一个构造函数就是用指定的编码方式去解码一般都用“UTF-8”的方式。只要在服务器端将请求得到的参数重新构造成一个字符串就行了。 经过构造之后客户端输入中文并提交表单使用get请求的情况下String就变成了中文了。 2、 客户端的post请求 对于客户端的post请求来说处理乱码的问题就比较简单了。因为post请求时数据是作为请求体的一部分传递给服务器的所以只要修改请求内的编码就可以。只要在服务器端的最开始处将请求的数据设置为UTF-8就行了输入如下语句
request.setCharacterEncoding(UTF-8);这样用户在服务器端获取到的中文数据就不再是乱码了。 二 、 超 链 接 时 出 现 乱 码 低 版 本 浏 览 器 不 行 − I E 6 \color{#7FFF00}{二、超链接时出现乱码低版本浏览器不行-IE6} 二、超链接时出现乱码低版本浏览器不行−IE6
在Web开发中挺多的时候都是通过超链接去传递中文参数的这也会导致在显示的时候也会出现乱码对于超链接来说它实际上是向服务器端发送了一个请求而它发出的请求是属于get请求所以对于超链接的乱码来说它处理乱码的方式和表单的get请求出现乱码的方式是一样的。 三 、 重 定 向 时 出 现 乱 码 低 版 本 浏 览 器 不 行 − I E 6 \color{#7FFF00}{三、重定向时出现乱码低版本浏览器不行-IE6} 三、重定向时出现乱码低版本浏览器不行−IE6
有时写上response的sendRedirect方法进行重定向时也会出现乱码重定向时实际上也是向服务器发送了一个请求所以解决乱码的方法和上面是一样的。 四 、 浏 览 器 版 本 低 导 致 的 乱 码 \color{#7FFF00}{四、浏览器版本低导致的乱码} 四、浏览器版本低导致的乱码
上网的时候有时候提交的一些信息在地址栏显示的是%2C%C6%CC%C6的字样其实这都是防止出现乱码进行的解决方案如果你的浏览器是IE6或以下版本则我们的第二种情况和第三种情况会出现乱码(尤其是当中文是奇数的时候)这就不好使了所以我们必须采用另一种比较实际的做法
在java.net包中提供了URLEncoder类和URLDcoder类这两个类又分别提供了encode和decode两个静态方法分别用于进行编码和解码。我们将要传递的中文参数进行编码之后再传递给服务器服务器解码之后就可以显示中文了。
//进行编码
URLEncoder.encode(stuname,UTF-8)!--传递给服务器--
a href/1.jsp?stuname%stuname%传递/a//进行解码
URLDecoder.decode(stuname,UTF-8)五 、 返 回 浏 览 器 显 示 的 乱 码 \color{#7FFF00}{五、返回浏览器显示的乱码} 五、返回浏览器显示的乱码
在Servlet编程中经常需要通过response对象将一些信息返回给浏览器给我们的客户端而我们在服务端显示的中文但是响应给客户浏览器确实乱码这主要是由于response对象的getWriter()方法返回的PrintWriter对象默认使用的ISO-8859-1字符集编码进行Unicode字符串到字节数组的转换由于ISO-8859-1字符集中根本没有包含中文字符所以Java在进行转换的时候会将无效的字符编码输出给客户端于是便出现了乱码为此ServletResponse接口中便定义了setCharacterEncodingsetContentType等方法来指定getWriter方法返回的PrintWriter对象所使用的字符集编码所以我们在写Servlet程序中在调用getWriter方法之前设置这些方法的值。
只要编写Servlet文件中含有响应给客户端的信息那么就要写上这两句话。最好写上第二句话因为它的优先级高它的设置结果将覆盖setContentType等方法设置的字符编码集。 六 、 修 改 T o m c a t 的 编 码 \color{#7FFF00}{六、修改Tomcat的编码} 六、修改Tomcat的编码
在get请求所导致乱码问题中还有一种解决的方案我们常用Tomcat作为运行Servlet和JSP的容器而Tomcat内部默认的编码是ISO-8859-1所以对于get请求方式其传递的数据(URI)会附加在访问的资源后面其编码是Tomcat默认的如果修改该URI的编码那么对于所有get请求方式便不会出现乱码了包括上边说的重定向和超链接在Tomcat的配置文件server.xml中找到修改Tomcat端口的地方在其内部加入URIEncoding属性设置为和你的项目中所设的编码一样的值这里全部都是UTF-8。
第一处 修改Tomcat编码 位置Tomcat安装路径/conf/server.xml
Connector port8080 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443useBodyEncodingForURItrue URIEncodingUTF-8/第二处 Java虚拟机中字符串编码默认跟随操作系统中文版的Windows系统编码为GBKLinux系统为UTF8如果需要手动设定编码可以在JVM启动时添加以下参数 位置tomcat安装路径/bin/catalina.bat
set JAVA_OPTS%JAVA_OPTS% %JSSE_OPTS%修改为如下
set JAVA_OPTS%JAVA_OPTS% -Dfile.encodingUTF-8 -Dsun.jnu.encodingUTF8 %JSSE_OPTS%注 意 ! ! ! 此 方 法 可 能 会 导 致 c m d 控 制 台 输 入 乱 码 暂 时 未 找 到 解 决 办 法 。 \color{#ff461f}{注意!!!此方法可能会导致cmd控制台输入乱码暂时未找到解决办法。} 注意!!!此方法可能会导致cmd控制台输入乱码暂时未找到解决办法。
在编写Servlet和JSP的时候为了避免出现乱码最重要的就是采用一致的编码如果编码都一致了肯定不会出现乱码。
参考
1.解决中文乱码的几种解决方法
2.java中文乱码问题解决方案整理