??xml version="1.0" encoding="utf-8" standalone="yes"?>
字符(Character)是文字与W号的ȝQ包括文字、图形符受数学符L(fng)?
一l抽象字W的集合是字符?Charset)?
字符集常常和一U具体的语言文字对应hQ该文字中的所有字W或者大部分常用字符构成了(jin)该文字的字符集,比如英文字符集?
一l有共同特征的字W也可以l成字符集,比如J体汉字字符集、日文汉字字W集?
字符集的子集也是字符集?
计算处理各种字符Q就需要将字符和二q制内码对应hQ这U对应关pd是字W编?Encoding)?
制定~码首先要确定字W集Qƈ字W集内的字符排序Q然后和二进制数字对应v来。根据字W集内字W的多少Q会(x)定用几个字节来~码?
每种~码都限定了(jin)一个明的字符集合Q叫做被~码q的字符?Coded Character Set)Q这是字W集的另外一个含义。通常所说的字符集大多是q个含义?
二、有哪些字符?
ASCII:
American Standard Code for Information InterchangeQ美国信息交换标准码?
目前计算Z用得最q泛的字W集?qing)其~码Q由国国家标准局(ANSI)制定?
它已被国际标准化l织(ISO)定ؓ(f)国际标准Q称为ISO 646标准?
ASCII字符集由控制字符和图形字W组成?
在计机的存储单元中Q一个ASCII码值占一个字?8个二q制?Q其最高(sh)(b7)用作奇偶校验位?
所谓奇偶校验,是指在代码传送过E中用来(g)验是否出现错误的一U方法,一般分奇校验和偶校验两U?
奇校验规?正确的代码一个字节中1的个数必L奇数Q若非奇敎ͼ则在最高(sh)b7??
偶校验规?正确的代码一个字节中1的个数必L偶数Q若非偶敎ͼ则在最高(sh)b7??
ISO 8859-1:
ISO 8859Q全UISO/IEC 8859Q是国际标准化组l?ISO)?qing)国际?sh)工委员(sh)(x)(IEC)联合制定的一pd8位字W集的标准,现时定义?5个字W集?
ASCII收录?jin)空格?qing)94?#8220;可印刷字W?#8221;Q以给p使用?
但是Q其他用拉丁字母的语言(主要是欧z国家的语言)Q都有一定数量的变音字母Q故可以使用ASCII?qing)控制字W以外的区域来储存及(qing)表示?
除了(jin)使用拉丁字母的语a外,使用襉K?dng)字母的东欧语言、希腊语、泰语、现代阿拉伯语、希伯来语等Q都可以使用q个形式来储存及(qing)表示?
* ISO 8859-1 (Latin-1) - 西欧语言
* ISO 8859-2 (Latin-2) - 中欧语言
* ISO 8859-3 (Latin-3) - 南欧语言。世界语也可用此字符集显C?
* ISO 8859-4 (Latin-4) - 北欧语言
* ISO 8859-5 (Cyrillic) - 斯拉夫语a
* ISO 8859-6 (Arabic) - 阿拉伯语
* ISO 8859-7 (Greek) - 希腊?
* ISO 8859-8 (Hebrew) - 希伯来语(视觉序)
* ISO 8859-8-I - 希伯来语(逻辑序)
* ISO 8859-9 (Latin-5 ?Turkish) - 它把Latin-1的冰岛语字母换走Q加入土耛_语字母?
* ISO 8859-10 (Latin-6 ?Nordic) - 北日x(chng)语支Q用来代替Latin-4?
* ISO 8859-11 (Thai) - 泰语Q从泰国?TIS620 标准字集演化而来?
* ISO 8859-13 (Latin-7 ?Baltic Rim) - 波罗的语?
* ISO 8859-14 (Latin-8 ?Celtic) - 凯尔特语?
* ISO 8859-15 (Latin-9) - 西欧语言Q加入Latin-1Ơ缺的法语及(qing)芬兰语重韛_母,以及(qing)Ƨ元W号?
* ISO 8859-16 (Latin-10) - 东南Ƨ语a。主要供|马g语用,q加入欧元符受?
很明显,iso8859-1~码表示的字W范围很H,无法表示中文字符?
但是Q由于是单字节编码,和计机最基础的表C单位一_(d)所以很多时候,仍旧使用iso8859-1~码来表C?
而且在很多协议上Q默认用该~码?
UCS:
通用字符?Universal Character SetQUCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的字W编码方式,采用4字节~码?
UCS包含?jin)已知语a的所有字W?
除了(jin)拉丁语、希腊语、斯拉夫语、希伯来语、阿拉伯语、亚尼亚语、格鲁吉亚语Q还包括中文、日文、韩文这L(fng)象Ş文字QUCSq包括大量的囑Ş、印列数学、科学符受?
* UCS-2: 与unicode?byte~码基本一栗?
* UCS-4: 4byte~码, 目前是在UCS-2前加?个全零的byte?
Unicode:
Unicode(l一码、万国码、单一?是一U在计算Z使用的字W编码?
它是http://www.unicode.org制定的编码机Ӟ 要将全世界常用文字都函括q去?
它ؓ(f)每种语言中的每个字符讑֮?jin)统一q且唯一的二q制~码Q以满跨语a、跨q_q行文本转换、处理的要求?
1990q开始研发,1994q正式公布。随着计算机工作能力的增强QUnicode也在面世以来的十多年里得到普?qing)?
但自从unicode2.0开始,unicode采用?jin)与ISO 10646-1相同的字库和字码QISO也承诺ISO10646不?x)给?x10FFFF的UCS-4~码赋|使得两者保持一致?
Unicode的编码方式与ISO 10646的通用字符?Universal Character SetQUCS)概念相对应,目前的用于实用的Unicode版本对应于UCS-2Q?6位的~码I间?
也就是每个字W占?个字节,基本满各种语言的用。实际上目前版本的Unicode未填充满这16位编码,保留?jin)大量空间作为特D用或来扩展?
UTF:
Unicode 的实现方式不同于~码方式?
一个字W的Unicode~码是确定的Q但是在实际传输q程中,׃不同pȝq_的设计不一定一_(d)以及(qing)Z节省I间的目的,对Unicode~码的实现方式有所不同?
Unicode的实现方式称为Unicode转换格式(Unicode Translation FormatQ简UCؓ(f) UTF)?
* UTF-8: 8bit变长~码Q对于大多数常用字符?ASCII?~127字符)它只使用单字节,而对其它常用字符(特别是朝鲜和汉语?x)意文?Q它使用3字节?
* UTF-16: 16bit~码Q是变长码,大致相当?0位编码,值在0?x10FFFF之间Q基本上是unicode~码的实玎ͼ与CPU字序有关?
汉字~码:
* GB2312字集是简体字集,全称为GB2312(80)字集Q共包括国标体汉?763个?
* BIG5字集是台湄体字集,共包括国标繁体汉?3053个?
* GBK字集是简J字集,包括?jin)GB字集、BIG5字集和一些符P共包?1003个字W?
* GB18030是国家制定的一个强制性大字集标准Q全UCؓ(f)GB18030-2000Q它的推Z汉字集有?jin)一?#8220;大一l?#8221;的标准?
ANSI和Unicode big endia:
我们在Windowspȝ中保存文本文件时通常可以选择~码为ANSI、Unicode、Unicode big endian和UTF-8Q这里的ANSI和Unicode big endia是什么编码呢?
ANSI:
使用2个字节来代表一个字W的各种汉字延~码方式Q称为ANSI~码?
在简体中文系l下QANSI~码代表GB2312~码Q在日文操作pȝ下,ANSI~码代表JIS~码?
Unicode big endia:
UTF-8以字节ؓ(f)~码单元Q没有字节序的问题。UTF-16以两个字节ؓ(f)~码单元Q在解释一个UTF-16文本前,首先要弄清楚每个~码单元的字节序?
Unicode规范中推荐的标记字节序的方法是BOM(即Byte Order Mark)?
在UCS~码中有一个叫?ZERO WIDTH NO-BREAK SPACE"的字W,它的~码是FEFF。而FFFE在UCS中是不存在的字符Q所以不应该出现在实际传输中?
UCS规范我们在传输字节流前,先传输字W?ZERO WIDTH NO-BREAK SPACE"?
q样如果接收者收到FEFFQ就表明q个字节是Big-Endian的;如果收到FFFEQ就表明q个字节是Little-Endian的?
因此字符"ZERO WIDTH NO-BREAK SPACE"又被UCBOM?
Windows是使用BOM来标记文本文件的~码方式的?
三、编E语a与编?
C、C++、Python2内部字符串都是用当前系l默认编?
Python3、Java内部字符串用Unicode保存
Ruby有一个内部变?KCODE用来表示可识别的多字节字W串的编码,变量gؓ(f)"EUC" "SJIS" "UTF8" "NONE"之一?
$KCODE的gؓ(f)"EUC"Ӟ假定字W串或正则表辑ּ的编码ؓ(f)EUC-JP?
同样圎ͼ若ؓ(f)"SJIS"时则认定为Shift JIS。若?UTF8"时则认定为UTF-8?
若ؓ(f)"NONE"Ӟ不?x)识别多字节字符丌Ӏ?
在向该变量赋值时Q只有第1个字节v作用Q且不区分大写字母?
"e" "E" 代表 "EUC"Q?s" "S" 代表 "SJIS"Q?u" "U" 代表 "UTF8"Q?n" "N" 则代?"NONE"?
默认gؓ(f)"NONE"?
即默认情况下Ruby把字W串当成单字节序列来处理?
四、ؓ(f)什么会(x)q?
q是个老问题,从上面我们知道,字符在保存时的编码格式如果和要显C的~码格式不一L(fng)话,׃(x)出现q问题?
我们的WebpȝQ从底层数据库编码、Web应用E序~码到HTML面~码Q如果有一不一致的话,׃(x)出现q?
所以,解决q问题说难也难说简单也单,关键是让交互pȝ之间~码一致?
五、有没有万金?
在如此多U编码和字符集弄的我们眼qq情况下,我们只需选择一U兼Ҏ(gu)最好的~码方式和字W集Q让它成为我们程序子pȝ之间
交互的编码契U,那么从此gh的ؕ码问题即远L们而去 -- q种兼容性最好的~码是UTF-8!
毕竟GBK/GB2312是国内的标准Q当我们大量使用国外的开源Y件时QUTF-8才是~码界最通用的语a?
http://www.javaeye.com/topic/97803
发表?@ 2008q?1?2日 15:12:00
JAVA中{义字W:(x)
1.八进制{义序列:(x)\ + 1??数字Q范?\000'~'\377'
\0Q空字符
2.Unicode转义字符Q\u + 四个十六q制数字Q?~65535
\u0000Q空字符
3.Ҏ(gu)字符Q就3?
\"Q双引号
\'Q单引号
\\Q反斜线
4.控制字符Q??
\' 单引号字W?
\\ 反斜杠字W?
\r 回R
\n 换行
\f 走纸换页
\t 横向x(chng)
\b 退?
点的转义Q? ==> u002E
元W号的{义:(x)$ ==> u0024
乘方W号的{义:(x)^ ==> u005E
左大括号的{义:(x){ ==> u007B
左方括号的{义:(x)[ ==> u005B
左圆括号的{义:(x)( ==> u0028
竖线的{义:(x)| ==> u007C
叛_括号的{义:(x)) ==> u0029
星号的{义:(x)* ==> u002A
加号的{义:(x)+ ==> u002B
问号的{义:(x)? ==> u003F
反斜杠的转义Q?==> u005C
发表?@ 2008q?1?2日 15:27:00
http://en.wikipedia.org/wiki/Create,_read,_update_and_delete
发表?@ 2009q?3?9日 15:40:00怎么来写一个Spring的简单程序呢?
0.先将spring.jar攑ֈ构徏路径?如果是web目的copy到l(f)ib目录?
1.写一个java的bean,要求有一个属性对应有get,setҎ(gu)?又或者是在该bean的构造函C讄该属?
前者的依赖注入方式?set注入,后者ؓ(f)构造注?
view plaincopy to clipboardprint?
package com.gc.action;
public class HelloWorld {
public String msg = null;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
package com.gc.action;
public class HelloWorld {
public String msg = null;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
?/p>
view plaincopy to clipboardprint?
package com.gc.action;
public class HelloWorld {
public String msg = null;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public HelloWorld(String msg) {
this.msg = msg;
}
}
package com.gc.action;
public class HelloWorld {
public String msg = null;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public HelloWorld(String msg) {
this.msg = msg;
}
}
2.写一配置文gconfig.xml
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="hello" class="com.gc.action.HelloWorld">
<property name="msg">
<value>HelloWold</value>
</property>
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="hello" class="com.gc.action.HelloWorld">
<property name="msg">
<value>HelloWold</value>
</property>
</bean>
</beans>
?/p>
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="hello" class="com.gc.action.HelloWorld">
<constructor-arg index="0">
<value>hello china </value>
</constructor-arg>
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="hello" class="com.gc.action.HelloWorld">
<constructor-arg index="0">
<value>hello china </value>
</constructor-arg>
</bean>
</beans>
3.在需要的cM用配|好的bean
view plaincopy to clipboardprint?
package com.gc.test;
import com.gc.action.HelloWorld;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class TestHolloWorld {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//HelloWorld hello = new HelloWorld();
//hello.setMsg("hello world");
//System.out.print(hello.getMsg());
ApplicationContext actx = new FileSystemXmlApplicationContext("WebRoot//config.xml");
HelloWorld hello = (HelloWorld) actx.getBean("hello");
System.out.print(hello.getMsg());
}
}
package com.gc.test;
import com.gc.action.HelloWorld;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class TestHolloWorld {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//HelloWorld hello = new HelloWorld();
//hello.setMsg("hello world");
//System.out.print(hello.getMsg());
ApplicationContext actx = new FileSystemXmlApplicationContext("WebRoot//config.xml");
HelloWorld hello = (HelloWorld) actx.getBean("hello");
System.out.print(hello.getMsg());
}
}
发表?@ 2009q?3?8日 23:06:00
http://java.chinaitlab.com/tools/727017.html
http://blog.csdn.net/azheng270/archive/2008/03/12/2173430.aspx
http://logging.apache.org/log4j/1.2/manual.html
发表?@ 2009q?3?8日 23:26:00
http://rodney.cnblogs.com/archive/2005/08/18/instanceof.html
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op2.html
http://java.sun.com/docs/books/jvms/second_edition/html/Instructions2.doc6.html
发表?@ 2009q?3?0日 12:59:00 |
Z么不能用?
因ؓ(f)未在环境变量的Path中加入C:\Program Files\Java\jdk1.6.0_12\bin,加入q项后bin目录下的E序p在命令行下运?因ؓ(f)你在命o(h)行下输入一命o(h),命o(h)要对应有E序? pȝ?x)在哪里找这个程?在Path中~~~
命o(h)行会(x)查看pȝ的system32目录下有无该命o(h)的程?如果没有׃(x)在Path中查看有无~~~
同样的ant的安装也要配|到Path中~~~,才能用ant命o(h).c:\ant\bin; 它需要jdk的支持所以要c:\jdk\bin
又一个问题出C(jin)~~~有时要在环境变量中加?JAVA_HOME , TOMCAT_HOME , ANT_HOME 的~~~有什么用?
XXX_HOME意思是XXX的安装目录~~~ 如JAVA_HOME p|这个C:\Program Files\Java\jdk1.6.0_12 ,
讄XXX_HOME有什么用?
{案不太清楚,只知道有一U用法可以这样~~~~
当你配置?jin)JAVA_HOME , Path中就可以q样?%JAVA_HOME%\bin;%ANT_HOME%\bin
可见讄path 的目的是让系l能扑ֈE序
classpath 的设|?%java_home%\lib\tools.jar;%java_home%\lib\rt.jar 不太?jin)解有什么用
发表?@ 2009q?3?0日 17:41:00
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<value>welcome</value>
</property>
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<value>welcome</value>
</property>
</bean>
</beans>
其中的id g定是messageSource ,cL org.springframework.context.support.ResourceBundleMessageSource
basename属性的值是你存攑֛际化信息的文件名的前~.
2.写porperties国际化文件~~~~q把非英文的文g用native2ascii命o(h)转成utf-8cd
(最好是通过Eclipse的国际化插g?
poperties文g攑֜src目录?/p>
welcome_en_US.properties p
HelloWorld=language: {0} time: {1}
HelloWorld=language: {0} time: {1}
welcome_zh_CN.properties 中文
原文: HelloWorld=问候语: {0} 问候时? {1}
view plaincopy to clipboardprint?
HelloWorld=\u95ee\u5019\u8bed: {0} \u95ee\u5019\u65f6\u95f4: {1}
HelloWorld=\u95ee\u5019\u8bed: {0} \u95ee\u5019\u65f6\u95f4: {1}
3. 写程?br />
package com.zhao.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import java.util.Calendar;
import java.util.Locale;
public class TestHelloWorld {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext actx = new FileSystemXmlApplicationContext("config.xml");
Object[] objs = new Object[] {"Hello",Calendar.getInstance().getTime()};
//Calendar.getInstance().getTime() 得到旉
String msg = actx.getMessage("HelloWorld", objs, Locale.CHINA); //中文
//String msg = actx.getMessage("HelloWorld", objs, Locale.US); //英文
//objs数组 内容对应 配置文g中的 {0} {1}参数
System.out.println(msg);
}
}
package com.zhao.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import java.util.Calendar;
import java.util.Locale;
public class TestHelloWorld {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext actx = new FileSystemXmlApplicationContext("config.xml");
Object[] objs = new Object[] {"Hello",Calendar.getInstance().getTime()};
//Calendar.getInstance().getTime() 得到旉
String msg = actx.getMessage("HelloWorld", objs, Locale.CHINA); //中文
//String msg = actx.getMessage("HelloWorld", objs, Locale.US); //英文
//objs数组 内容对应 配置文g中的 {0} {1}参数
System.out.println(msg);
}
}
发表?@ 2009q?3?2日 00:27:00