欢迎来到天天文库
浏览记录
ID:41006037
大小:71.00 KB
页数:9页
时间:2019-08-13
《Java Web应用程序的字符编码问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、JavaWeb应用程序的字符编码问题 JavaWeb应用程序经常会出现乱码的情况,这里可以通过ServletAPI中的标准Filter来实现,也可以在Web容器配置URIEncoding。这些都依赖于浏览器的请求方式。在Web容器的配置文件中配置URIEncoding="UTF-8"使用ServletAPI的标准Filter结果地址栏中直接输入链接(含汉字)√×失败(编码成功)地址栏中直接输入链接(含汉字)×√失败(编码成功)地址栏中直接输入链接(含汉字)√√失败(编码成功)页面内的普通链接(a标签,含汉字)√×编码成功,地址栏中直接显示汉字页面内的普通链接(a标签,含
2、汉字)×√编码失败页面内的普通链接(a标签,含汉字)√√编码成功,地址栏中直接显示汉字formget提交√×编码成功,地址栏显示编码后的汉字formget提交×√编码失败formget提交√√编码成功,地址栏显示编码后的汉字formpost提交√×编码失败formpost提交×√编码成功formpost提交√√编码成功 因此,通过以上表格的总结,我们可以得出这样一个结论:URLEncoding是针对get请求,Filter是针对post请求。Web容器的编码问题2008-11-1909:08:53 技术
3、 评论(0)
4、 浏览(595)一、 概述基于Java编程语言进行应用开发时,不可避免地要处理中文。Java编程语言默认的编码方式是UNICODE,而我们通常使用的数据库及文件都是基于GBK编码的,我们经常碰到这样的情况:浏览基于JSP技术的网站看到的是乱码,文件打开后看到的也是乱码,被Java修改过的数据库的内容在别的场合应用时无法继续正确地提供信息。本文将从编码基本知识,Java对字符的处理,以及常见问题的解决三个方面对问题进行阐述。二、 编码基本知识最早的编码是ISO
6、-8859-1,和ASCII编码相似。但为了方便表示各种各样的语言,逐渐出现了很多标准编码,重要的有如下几个。 1、ISO-8859-1 属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。比如,字母'a'的编码为0x61=97。很明显,ISO-8859-1编码表示的字符范围很窄,无法表示中文字符。但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用ISO-8859-1编码来表示。而且在很多协议上,默认使用该编码。比如,虽然"中文"两个字不存在ISO-8859-1编码,以gb2312编码为例,应该是"d6d0 cec4"两个字符,使用I
7、SO-8859-1编码的时候则将它拆开为4个字节来表示:"d6 d0 ce c4"(事实上,在进行存储的时候,也是以字节为单位处理的)。而如果是UTF编码,则是6个字节"e4 b8 ad e6 96 87"。很明显,这种表示方法还需要以另一种编码为基础。 2、GB2312/GBK 这就是汉子的国标码,专门用来表示汉字,是双字节编码,而英文字母和ISO-8859-1一致(兼容ISO-8859-1编码)。其中GBK编码能够用来同时表示繁体字和简体字,而gb2312只能表示简体字,GBK是兼容gb2312编码的。 3、UNICODE 这是最统一的编码,可以用来表示所有语言的字符,
8、而且是定长双字节(也有四字节的)编码,包括英文字母在内。所以可以说它是不兼容ISO-8859-1编码的,也不兼容任何编码。不过,相对于ISO-8859-1编码来说,UNICODE编码只是在前面增加了一个0字节,比如字母'a'为"00 61"。 需要说明的是,定长编码便于计算机处理(注意GB2312/GBK不是定长编码),而UNICODE又可以用来表示所有字符,所以在很多软件内部是使用UNICODE编码来处理的,比如java。 4、UTF -8考虑到UNICODE编码不兼容ISO-8859-1编码,而且容易占用更多的空间:因为对于英文字母,UNICODE也需要两个字节来表示。
9、所以UNICODE不便于传输和存储。因此而产生了UTF-8编码,UTF-8编码兼容ISO-8859-1编码,同时也可以用来表示所有语言的字符,不过,UTF-8编码是不定长编码,每一个字符的长度从1-6个字节不等。另外,UTF-8编码自带简单的校验功能。一般来讲,英文字母都是用一个字节表示,而汉字使用三个字节。 注意,虽然说UTF-8是为了使用更少的空间而使用的,但那只是相对于UNICODE编码来说,如果已经知道是汉字,则使用GB2312/GBK无疑是最节省的。不过另一方面,值得说明的是,虽然UTF-8编码对汉字使用
此文档下载收益归作者所有