`

【转载】web开发中的乱码总结

    博客分类:
  • web
阅读更多

1. 静态页面的乱码问题
文件的编码和浏览器要显示的编码不一致。

1) 检查文件原始的编码, 可以用记事本打开, 然后选择另存为来看;
2) 给当前页面加入一个指令来建议浏览器用指定的编码来显示文件字符内容.

Html代码 复制代码 收藏代码
  1. <meta http-equiv="content-type" content="text/html; charset=GBK">  
<meta http-equiv="content-type" content="text/html; charset=GBK">

 
2. JSP 页面的乱码问题
1) page 指令有个 pageEncoding="GBK" 这个会指定当前页面保存的编码, 如果写成ISO8859-1 就不能保存汉字;
2) page 指令的 contentType="text/html; charset=ISO8859-1" 也会像静态页面一样让浏览器来优先选择一种编码.
如果JSP 乱码的话,一般就显示成?,而且不管你给浏览器选什么样的编码,它都不能正确显示


3. 表单提交的乱码问题(Tomcat 特有)
1). POST 的乱码

a. 首先浏览器提交表单的编码是根据表单所在页面来决定的, 而不是根据提交后的JSP 页面的编码来决定的. 把所有的页面的编码都设置成一样的,例如 GBK.
b. 处理方式就是在获取参数之前设置编码:
request.setCharacterEncoding("GBK");
c. 可以用过滤器的方式来解决, Tomcat 已经带了一个现成的:
apache-tomcat-5.5.23\webapps\jsp-examples\WEB-INF\classes\filters\SetCharacter
EncodingFilter.java
web.xml

Xml代码 复制代码 收藏代码
  1. <filter>  
  2. <filter-name>Set Character Encoding</filter-name>  
  3. <filter-class>filters.SetCharacterEncodingFilter</filter-class>  
  4. <init-param>  
  5. <param-name>encoding</param-name>  
  6. <param-value>GBK</param-value>  
  7. </init-param>  
  8. </filter>  
  9. <filter-mapping>  
  10. <filter-name>Set Character Encoding</filter-name>  
  11. <url-pattern>/*</url-pattern>  
  12. </filter-mapping>  
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

 

 

 2) GET 方式的乱码

 

a.手动转码:用 setCharacterEncoding() 不能解决. TOMCAT 的一个BUG, GET 方式传送的表单参数总是用的 ISO8859-1 编码. 我们要把它转成 GBK 方式.

Java代码 复制代码 收藏代码
  1. String username = request.getParameter("username");   
  2. System.out.println(username);   
  3. // 转码, 先取得原始的二进制字节数组   
  4. byte[] data = username.getBytes("ISO8859-1");   
  5. // 根据新的字符集再构造新的字符串   
  6. username = new String(data, "GBK");  
String username = request.getParameter("username");
System.out.println(username);
// 转码, 先取得原始的二进制字节数组
byte[] data = username.getBytes("ISO8859-1");
// 根据新的字符集再构造新的字符串
username = new String(data, "GBK");

 b.配置tomcat(java web项目常用的服务器)的链接编码

在Jsp的页面中通过超链接传参数,例如:<a href="ss.jsp?userName=zhangsan"></a> 接收到的参数为乱码。解决办法:在tomcat安装目录下,找到conf目录,打开该目录下的server.xml文件,按照下面的代码进行配置,红色部分为要添加的内容,将其添上即可:

Xml代码 复制代码 收藏代码
  1. <Connector port="8090" protocol="HTTP/1.1"    
  2.                connectionTimeout="20000"    
  3.                redirectPort="8443" URIEncoding="UTF-8"/>  
<Connector port="8090" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8"/>

 

 4.解决响应乱码:

 

所谓响应中的乱码,就是显示页面上的乱码,因为页面数据是从服务器一端放入响应(response)中,然后发送给浏览器,如果响应中的数据无法被正常解析,就会出现乱码问题。

在http的响应(response)中添加编码信息,使用如下方式:

Html代码 复制代码 收藏代码
  1. <%@ page contentType="text/html; charset=gb2312"%>  
<%@ page contentType="text/html; charset=gb2312"%>

 

这段要放在jsp页面的第一行,用来指定响应的类型和编码格式,contentType为text/html就是html内容,charset表示编码为gb2312。这样浏览器就可以从响应中获得编码格式了。

 

在html中指定编码格式。

Html代码 复制代码 收藏代码
  1. <head>  
  2.  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  3.  <title>title</title>  
  4. </head>  
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 <title>title</title>
</head>

 在Servlet中指定编码格式:

Java代码 复制代码 收藏代码
  1. response.setCharacterEncoding()   
response.setCharacterEncoding() 

 附:JSP中的编码设置

1. pageEncoding:<%@ page pageEncoding="UTF-8"%> 设置JSP编译成Servlet时使用的编码

 

2. contentType: <%@ page contentType="text/html; charset=UTF-8"%> 对服务器响应进行重新编码,即jsp的输出流在浏览器中显示的编码

 

3. html页面charset:

<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 网页的编码信息 ,说明页面制作所使用的编码

 

4. request.setCharacterEncoding() -- 可用在servlet和jsp页面中,作用是设置对客户端请求进行重新编码的编码,即post方式提交的数据进行编码。

 

5. response.setCharacterEncoding() -- 可用在servlet和jsp页面中,对服务器响应进行重新编码,即jsp的输出流在浏览器中显示的编码,

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

 

6. response.setContentType() -- 可用在servlet和jsp页面中,对服务器响应进行重新编码,即jsp的输出流在浏览器中显示的编码,与<%@ page contentType="text/html;charset=UTF-8"%>一样。如:response.setContentType("text/html;charset=GBK");

 

7.response.setHeader("Content-Type","text/html;charset=UTF-8"); -- 可用在servlet和jsp页面中。response.setHeader 是用来设置返回页面的头 meta 信息, 使用时 response.setHeader( name, contect );

与<META http-equiv="Content-Type" content="text/html; charset=UTF-8">一样

分享到:
评论

相关推荐

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    webfilter的教程

    `[转载]java web开发中的listener和filter`文件可能会介绍`Listener`,它们是另一种类型的Web组件,监听特定的事件,如会话创建或销毁,然后执行相应的操作。 `javax_servlet_Filter`的使用教程可能深入讨论了`...

    js提示框-转载+++ js 乱码+++自动提交+滚动图片加载+箭头导航(转载)

    在IT行业中,JavaScript是一种广泛使用的前端编程语言,用于创建交互式的网页应用。在这个"js提示框-转载+++ js 乱码+++自动提交+滚动...在实际开发中,掌握这些知识点有助于创建更富交互性和用户体验良好的Web应用。

    css参考手册v4.2.4by飘零雾雨(web前端开发参考手册)最新版本

    现网络上已流传着各种版本的手册,而新版本可能会改正老版本中的错误和增加新的内容,请以本站CSS参考手册官网为准,因为官网在任何时候都是最新版本。 另请转载本站内容的个人或者组织,保留本站的版权及相关链接...

    ireport快速入门指南

    比如中文字体乱码和PDF中无法正常显示的问题、报表分栏显示、去除记录中的null值、实现奇偶行不同背景颜色的交替显示、格式化输出、柱状图的横向显示、主报表和子报表参数的“沟通”、报表不同格式文件的导出、在Web...

    性能测试经验总结资料,适宜初学和中级(由于是公司内部资料,不想花分勿下)

    #### 十、性能指标中英文词汇表(转载) - **SQL数据库**:列出与SQL数据库相关的性能指标,如查询响应时间、事务处理速度等。 - **WEBSERVER**:涵盖Web服务器的性能指标,包括页面加载时间、并发连接数等。 - **...

    intellij-idea教程

    教程还涵盖了Emmet、Postfix Completion、插件安装等高级功能,以及如何将Eclipse环境下的Java Web项目迁移到IntelliJ IDEA中,以及如何使用Maven进行项目管理。 在高级主题部分,教程讲解了如何进行Debug和重构,...

    最新存款利息计算器源码程序.pdf

    该文档提供的是一个基于JSP(JavaServer Pages)的个人存款利息计算器源代码。JSP是一种在服务器端运行的脚本语言...通过阅读和分析这段代码,可以深入了解Web应用中用户输入验证、动态数据计算和页面交互的实现方法。

    在Win10上安装Tomcat服务器及配置环境变量的详细教程(图文)

    在使用Tomcat过程中,可能会遇到一些启动问题,如启动后出现乱码、端口占用或启动后立即关闭(闪退)等。这些问题的解决方案可以在Tomcat官方文档中找到,或者通过搜索引擎查询。 最后,为了方便使用Tomcat,建议...

Global site tag (gtag.js) - Google Analytics