`

web开发中的乱码总结

    博客分类:
  • web
 
阅读更多

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

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

<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

<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 方式.

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文件,按照下面的代码进行配置,红色部分为要添加的内容,将其添上即可:

<Connector port="8090" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8"/>

 

 4.解决响应乱码:

 

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

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

<%@ page contentType="text/html; charset=gb2312"%>

 

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

 

在html中指定编码格式。

<head>
 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 <title>title</title>
</head>

 在Servlet中指定编码格式:

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">一样

分享到:
评论

相关推荐

    WEB开发乱码处理总结

    WEB开发中总会遇到乱码,这些都是经常出现,但是很烦的问题,处理起来并不难

    web开发中url乱码处理

    在开发web项目时经常遇到乱码问题,怎样去解决这种问题,是很头疼的事情,这里总结了几种方法供使用。

    java web开发解决乱码问题

    解决在javaweb开发的过程中遇到的乱码问题,纯属个人在学习中的总结。

    Web_开发中遇到的UTF-8以及乱码的问题总结.zip

    Web_开发中遇到的UTF-8以及乱码的问题总结.zip

    PHP WEB 开发乱码问题总结

    php开发过程中主要有五个方面可能会导致乱码。 一..HTML 页面转UTF-8 编码问题 二.PHP 页面转UTF-8 编码问题 三.MYSQL 数据库使用UTF-8 编码的问题 四.JS 相关的UTF-8 编码问题 五.FLASH 相关的UTF-8 编码问题 ...

    jsp中文乱码总结包括 ajax中文乱码

    针对java web开发方面中文乱码情况的总结,基本各种情况都有了!

    Java web工程乱码解决方案

    这里总结了我在j2ee开发过程中,中文乱码的解决方案。希望能够帮到大家!

    【Web开发】彻底解决开发中请求(get/post)、应答以及控制台中文乱码问题

    我们在javaWeb项目时,使用doget和dopost总是会出现各种原因的中文乱码问题,楼主在查阅大量资料后,将为什么有这样的问题,和如何解决这种问题做个总结。 思维导图: 1. 应答乱码处理(response输出页面时乱码) 1.1 ...

    Java Web之高级应用,以ppt的形式呈现

    Java Web之高级应用,内容包括Tomcat中的类...为Tomcat配置Https协议功能,为站点增加自动登和单点登录功能,解决Web开发中的相对路径问题,为网站配置相同页眉和页脚的技巧,总结分析Web开发中的各种字符乱码问题。

    个人开发中遇到常见问题及解决办法(吐血总结)

    1 JS中Number数值运算不精确的解决办法 ...12 ava web项目中开放一个webservice接口实例 13 js方式实现 系统时间显示 14 js 按Enter健实现搜索 15 多选框批量删除 16 js实现单选全选 17 数据库表数据被误删之后的恢复

    Java Web之高级应用

    Tomcat中的类装载器 为Tomcat配置Https协议功能 为站点增加自动登录和单点登录功能 解决Web开发中的相对路径问题 为网站配置相同页眉和页脚的技巧 总结分析Web开发中的各种字符乱码问题

    关于Tomcat和jsp经验总结

    tomcat ,tomcat ,tomcat ,tomcat ,tomcat ,tomcat ,tomcat ,tomcat ,tomcat ,对JSP开发中容易出现的一些错误的总结,有出现错误的截图以及解决方法,包括了jsp页面的一些常见错误,控制台出现的错误,中文乱码处理、...

    jsp页面文档编码问题

    总结了在java web开发中遇到的种种编码问题,使乱码问题逐一清除

    Dashboard开发过程和规范

    1. 目的 2 2. 内容 2 2.1. 介绍 2 2.1.1. 什么是wpf&&wdf; 2 2.1.2. wpf&&wdf;起源 2 2.1.3. Dashboard优点 2 2.1.4. Dashboard弱点 3 2.2. 开发Dashboard步骤 3 2.2.1. 分析项目需求 3 ...3. 总结 22

    PHP程序开发范例宝典III

    个实例,每个实例都突出实用性,绝大部分实例都体现了PHP编程人员在实际项目开发过程中总结出的经验技巧。  《PHP程序开发范例宝典》内容充实,实例丰富,特别适于PHP编程人员和广大计算机爱好者学习开发使用,也...

    SpringBoot开发非常美观的java博客系统(包含后台管理功能)

    一、java main方式运行mblog-web下的BootApplication.java时抛出异常的解决方案 Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean. SpringBoot开发非常美观的...

    asp.net知识库

    Web开发: 使用URL重写WEB主题切换 如何在Asp.Net1.1中实现页面模板(所谓的MasterPage技术) Tool Tip 示例(FILTER版) Tool Tip示例 (htc版) 一个.net发送HTTP数据实体的类 按键跳转以及按Enter以不同参数提交,及...

    ASP.NET Night Words

    第13章 asp.net中的ajax开发 238 13.1 纯javascript开发ajax应用 238 13.2 第三方(ajaxpro)开发 13.2 ajax应用 246 13.3 微软ajax控件库开发ajax应用 254 13.3.1 scriptmanager控件 254 13.3.2 ...

    struts2.1宝典

    13表单提交中文乱码问题 5 14.Jsp不能识别EL 5 15.自定义标签中访问Dao 获取dao 6 16.标签获取参数 6 17.Action之间传递错误验证信息 6 18第一个Ajax例子 Ajax+struts2 6 8.标签 7 8.Select标签 7 9.Checkbox 10 ...

Global site tag (gtag.js) - Google Analytics