Java的中文处理学习笔记:Hello Unicode
作者:车东 发表于:2002-07-09 15:07 最后更新于:2007-04-12 11:04
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
http://www.chedong.com/tech/hello_unicode.html
不知道你有没有这样的感受:为什么PHP很少有乱码问题而用Java做WEB应用却这么麻烦呢?为什么在Google上能用简体中文查到繁体中文,甚至日文的结果?而且用Google的时候发现它居然能自动根据我使用浏览器的语言选择自动调出中文界面?
很多国际化应用的让我理解了这么一个道理:Unicode是为更方便的做国际化应用设计的,而Java核心的字符是基于UNICODE的,这一机制为应用提供了对中文“字”的控制(而不是字节)。但如果不仔细理解其中的规范,这种自由反而会成为累赘,从而导致更多的乱码问题:
关于字符集的一些基本概念;
试验1:显示系统的环境设置和支持的编码方式;
试验2:系统缺省编码方式对Java应用的输入输出影响;
试验3:在WEB应用中输出和输出中的字符集问题;
关于字符集的准备知识:
ISO-8859-1 GB2312 BIG5 GBK GB18030 UNICODE 为什么会有这么多字符集编码方式?
注意:以下说明不是严格定义,一些比喻仅作为方便理解使用。
假设一个字符就是棋盘上的一个棋子,有其固定的坐标,如果需要区别所有的字符,就需要有足够的棋格容纳不同的“字符”。
英文和欧洲其他语言的单字节字符集(SingleByte Charsets):
首先对于ISO-8859系列的字符集都想象成一个:2^8 = 16 * 16 = 256个格子的棋盘,这样所有的西文字符(英文)用这样一个16×16的坐标系就基本可以覆盖全了。而英文实际上只用其中小于128(\x80)的部分就够了。利用大于128部分的空间的不同定义规则形成了真对其他欧洲语言的扩展字符集:ISO-8859-2 ISO-8859-4等……
ISO-8859-1
ISO-8859-7
其他语言
英文
其他西欧字符
ōē
英文
希腊字符
μγ
英文
其他单字节
字符集
GB2312 BIG5 SJIS等多字节字符集(MultiByte Charsets):
对于亚洲语言来说:汉字这么多,用这么一个256格的小棋盘肯定放不下,所以要区别成千上万的汉字解决办法就是用2个字节(坐标)来定位一个“字”在棋盘上的位置,将以上规则做一个扩展:
如果第1个字符是小于128(\x80)的仍和英文字符集编码方式保持兼容;
如果第1个字符是大于128(\x80)的,就当成是汉字的第1个字节,这个
相关文档:
JAVA中String与StringBuffer 、StringBuilder的区别
一、String和StringBuffer的区别
在java中有3个类来负责字符的操作。
1.Character 是进行单个字符操作的,
2.String 对一串字符进行操作。不可变类。
3.StringBuffer 也是对一串字符进行操作,但是可变类。
String属性:
*是对象不是原始类型.
*为不可变对象,一旦 ......
List <String> sqlFileList = new ArrayList <String>();
public List <String> readSqlFiles(List <String> fileNameList) {
List <String> sqlList = new ArrayList <String>();
for (String fi ......
1.前言
最近,P2P(Peer-to-Peer)又成为了因特网上的一个热点。P2P是因特网的一种应用模式,其意思是指网络上的任何设备(包括大型机、PC机、PDA、手机、机顶盒等等)都可以平等地直接进行连接并进行协作。想比当前因特网上主流的应用模式Client/Server或者Client/Service而 ......
xml 基础知识
1.介绍
1)DOM(JAXP Crimson解析器)
DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找
特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工 ......
/***************定义接口******************/
package day6;
public interface StudentDao {
public void insert();
public void update();
public void delete();
public void query();
public void FindById();
}
/***************定义接口 借宿***************** ......