java中文乱码分析整理
在JavaWeb应用开发中,经常会出现页面中本该显示中文的地方却是乱码的情况。究其原因,主要是由于在Web组件之间、或Web组件与浏览器、与数据库所使用的字符集标准不统一,Web应用程序运行过程中,中文字符往往需要在不同的字符集之间来回转换,这就导致了中文乱码问题的频繁出现。本文从Web应用的常用编码出发,详细讨论JavaWeb应用开发中出现中文乱码的原因以及解决办法。本文讨论的环境是基于JDK5.0,服务器为Tomcat5.5,数据库为MySQL5.0。
1 Web应用的常用编码
Web应用中常用的编码主要有ISO8859-1,GB2312,GBK,Unicode和UTF-8。
1.1 ISO8859-1
ISO8859-1,是国际标准化组织内ISO/IEC8859的第一个8位字符集,属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。
GB2312和GBK是中华人民共和国国家标准汉字信息交换用编码,简称国标码,专门用来表示汉字,是双字节编码。其中GBK编码能够用来同时表示繁体字和简体字,而GB2312只能表示简体字。
UTF-8编码,用1到6个字节编码Unicode字符,用在网页上可以在同一页面显示中文简体繁体及其他语言。
在Web应用中,通常包括了浏览器、Web服务器、Web应用程序和数据库等部分,每一部分都有可能使用不同的字符集,从而导致字符数据在各种不同的字符集之间转换时出现乱码问题。
在弄清Web应用中的中文乱码问题前,先明确理解JavaWeb开发中所用到的JSP/Servlet应用程序中的几个有关编码设置的方法。
在JSP/Servlet中主要有以下几种方式可以设置编码("***"表示编码方式):
js 程序代码:url=encodeURI(url);注意是整个URL
服务器端的代码:String linename = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
js:var url="name="+name;
url=encodeURI(encodeURI(url)); //用了2次encodeURI
window.location = "<%=path%>/inner/line/line.jsp?"+url;
服务器端的代码:
String linename = request.getParameter(name);
//java : 字符解码
linename = java.net.URLDecoder.decode(linename , "UTF-8");
java中文乱码分析整理的更多相关文章
- java中文乱码解决之道(一)-----认识字符集
沉寂了许久(大概有三个多月了吧),LZ"按捺不住"开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.c ...
- java中文乱码解决之道(九)-----总结
乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了.LZ之所以写这个系列博客就是因为遇到 ...
- 关于Java中文乱码与日期格式
关于Java中文乱码与日期格式 Java中文乱码的问题其实很普遍了,首先,一般不会在Windows平台下面出现,同时,一般在Tomcat应用服务器下也都正常,但是到了WebSphere,Weblogi ...
- java中文乱码解决之道(一)—–认识字符集
原文出处:http://cmsblogs.com/?p=1395 沉寂了许久(大概有三个多月了吧),LZ“按捺不住”开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要 ...
- java中文乱码解决之道(二)-----字符编码详解:基础知识 + ASCII + GB**
在上篇博文(java中文乱码解决之道(一)-----认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述字符集.字符编码等基础知识和ASCII.GB的详情. 一.基 ...
- java中文乱码解决之道(七)-----JSP页面编码过程
我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...
- java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**
原文出处:http://cmsblogs.com/?p=1412 在上篇博文(java中文乱码解决之道(一)—–认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述 ...
- Java中文乱码解决方案
Java中文乱码解决方案 1.中文乱码解决方案,确保每个文件的默认编码是UTF-8 加入 URIEncoding="UTF-8" 代码中的设置 1>在se ...
- java中文乱码解决之道(七)—–JSP页面编码过程
我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...
随机推荐
- IOS UIButton用法详解
这段代码动态的创建了一个UIButton,并且把相关常用的属性都列举了.希望对大家有用. //这里创建一个圆角矩形的按钮UIButton *button1 = [UIButton buttonWi ...
- JS Math.max() 函数
Math.max(a,b,...,x,y) -- 返回数个数字中较大的值 max是maximum的缩写,中文"最大量"的意思 max函数语法Math.max(a,b,...,x,y ...
- arduino--1s间隔闪烁灯
初始使用Arduino,写了这么个小功能:1s间隔闪烁灯 void setup() { pinMode(,OUTPUT);//Set 13Pin as OUTPUT } void loop() { d ...
- 【转】Linux Top 命令解析 比较详细
TOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况. TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户 ...
- IOS 使用wxsqlite3为sqlite3数据库加密
1,下载wxsqlite3 地址http://jaist.dl.sourceforge.net/project/wxcode/Components/wxSQLite3/wxsqlite3-3.1.1. ...
- 例子:Background Audio Streamer Sample
The Background Audio Streamer sample demonstrates how to create an app that uses a MediaStreamSource ...
- SpellTime
如果你的应用程序允许用户输入文本,或者它结合了任何基于文本的处理,那么我们有一款你一直寻找的产品.Spell Time 允许你把个拼写检查器整合到你的产品中.该产品携带了完整的源码.Spell Tim ...
- MVC中使用js拼接的元素验证问题
MVC使用的验证方式本质上是jquery.validation js 拼接的格式如下: <input class='required' title='请输入项目名称!' id='Project ...
- ubuntu上用eclipse搭建java、python开发环境
上一篇文章讲到如何在windwos上用eclipse搭建java.python开发环境,这一讲将关注如何在ubuntu上实现搭建,本人使用虚拟机安装的ubuntu系统,系统版本为:14.04 lts ...
- C++虚方法(虚函数)随笔
本文不讨论虚函数的原理,只简单总结下虚函数的常用事项. 虚函数(虚方法)是C++动态联编 实现多态的重要手段,在函数声明时使用关键字virtual即可,如: virtual void func(voi ...