﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-饭特稀-文章分类-java</title><link>http://www.blogjava.net/neumqp/category/3922.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 23:25:02 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 23:25:02 GMT</pubDate><ttl>60</ttl><item><title>转贴：Multibyte-character processing in J2EE</title><link>http://www.blogjava.net/neumqp/articles/15816.html</link><dc:creator>小铁匠</dc:creator><author>小铁匠</author><pubDate>Tue, 18 Oct 2005 05:40:00 GMT</pubDate><guid>http://www.blogjava.net/neumqp/articles/15816.html</guid><wfw:comment>http://www.blogjava.net/neumqp/comments/15816.html</wfw:comment><comments>http://www.blogjava.net/neumqp/articles/15816.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/neumqp/comments/commentRss/15816.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/neumqp/services/trackbacks/15816.html</trackback:ping><description><![CDATA[<H4 align=center><A href="http://www.javaworld.com/javaworld/jw-04-2004/jw-0419-multibytes_p.html">http://www.javaworld.com/javaworld/jw-04-2004/jw-0419-multibytes_p.html</A></H4>
<H4 align=center>多字节字符在J2EE中的处理<BR>－－多字节字符的J2EE开发</H4>
<P align=left><STRONG>摘要</STRONG><BR>大多数J2EE服务器对多字节字符语言（中文和日文）支持的很好，但是不同的J2EE服务器和浏览器支持的方式不同。当开发者从一个服务器移植中文应用到另一个时，总是遇到多字节字符问题。在本文里，Wang Yu分析了产生此种问题的根本原因，并提供了一些解决方案和指导方针。</P>
<P>中文是世界上最复杂、最综合的语言之一。有时我很庆幸自己是中国人，尤其我看到我的外国朋友为学好中文特别是写汉字而奋斗的时候。但当开发J2EE本地化应用，却无法庆幸了。本文将告诉你为什么。<BR>尽管java平台和大多数J2EE服务器很好的支持国际化，开发中文应用时我仍然遇到很多多字节字符问题：<BR>编码和字符集之间的区别是什么？<BR>为什么多字节字符应用在不同操作系统间有不同的显示？<BR>为什么多字节字符应用在不同应用服务器间有不同的显示？<BR>为什么多字节字符应用在不同浏览器间有不同的显示？<BR>为什么大多数J2EE服务器不能很好的支持UTF-16（universal transformation format）编码。<BR>本文将帮你解答这些疑问。<BR><BR><STRONG>字符的基础知识</STRONG><BR>字符在计算机发明之前就已经存在了。3000多年以前，甲骨文出现在古代中国。这些字符有特有的形象和意思，大部分有名字和发音。所有这些方面构成字符集（character repertoire），一组特有语言的截然不同的字符，与计算机没有一点关系。过去的几千年里，创造出许多种语言和数千的字符。现在我们试着将这些字符编码成计算机能理解的1和0的串。<BR>当用键盘打字时，你涉及字符输入方法。对于简单字符，存在字符和建码的一一对应。对于复杂语言，一个字符需要多个击键。<BR>当你看到屏幕上字符之前，操作系统必须存储字符在内存。实际上，操作系统定义了字符和非负整数的一一对应，保存在内存中。这些整数被称为字符码（character code）。<BR>字符能存储在文件中或通过网络传输。字符编码（character encoding ）定义了如何映射一个字符的字符码到字节的序列。一些字符码映射到单字节，如ASCII，一些映射到多字节，如中文、日文，依赖于不同的字符编码。<BR>不同的语言有不同的字符表，每一个字符表用特有的编码格式。通常，当选择了语言，就选择了对应的字符表、编码格式。比如，选择中文，默认就选择了GBK中文字符表和GBK编码格式。<BR>我避免术语字符集（character set），因为它带来混淆，显然character set和character repertoire是同义词。Character set被HTTP Mime 头误用了，charset被误用做encoding。<BR>Java的特性之一是16位的字符，支持Unicode，表示不同语言不同字符的标准方法。不幸的是，这种方法在J2EE开发中引起许多问题。<BR><STRONG>导致显示问题的不同开发阶段</STRONG><BR>J2EE开发包括几个阶段（图一）；每一个阶段都能导致多字节字符显示问题。<BR><STRONG>编码阶段</STRONG><BR>编码时大多用IDE如JB、NetBeans，或编辑器如UE、vi。不管选择什么，如果在jsp、java、html文件中有多字节字符串，如果不小心就会遇到显示问题。</P><img src ="http://www.blogjava.net/neumqp/aggbug/15816.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/neumqp/" target="_blank">小铁匠</a> 2005-10-18 13:40 <a href="http://www.blogjava.net/neumqp/articles/15816.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>