pengpenglin
人,必须选择一种生活方式并有勇气坚持下去
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 262, comments - 221, trackbacks - 0
【Java基础专题】编码与乱码(06)---字符的各种值转换
package
example.encoding;
/** */
/**
* The Class ChineseValidator.
*/
public
class
CharacterValueConveter
{
/** */
/**
* The main method.
*
*
@param
args the arguments
*/
public
static
void
main(String args[])
{
CharacterValueConveter conveter
=
new
CharacterValueConveter();
conveter.testConvertion(
"
中文
"
);
}
/** */
/**
* Test convertion.
*
*
@param
content the content
*/
public
void
testConvertion(String content)
{
byte
[] bytes
=
content.getBytes();
System.out.println(
"
Original String :
"
+
content);
System.out.println();
//
Get bytes array
System.out.println(
"
Convert string to bytes array :
"
);
for
(
int
i
=
0
; i
<
bytes.length; i
++
)
{
System.out.println(
"
byte[
"
+
i
+
"
]=
"
+
bytes[i]);
}
System.out.println();
//
Get each character and unicode
System.out.println(
"
Start to convert by character:
"
+
"
\n
"
);
for
(
int
j
=
0
; j
<
content.length(); j
++
)
{
char
c
=
content.charAt(j);
printAllValue(c);
}
}
/** */
/**
* Prints the all value.
*
*
@param
c the c
*/
public
void
printAllValue(
char
c)
{
byte
b
=
(
byte
) c;
int
i
=
(
int
) c;
short
s
=
(
short
) c;
String binaryString
=
Integer.toBinaryString(i);
String hexString
=
Integer.toHexString(i);
StringBuffer output
=
new
StringBuffer();
//
Base value
output.append(
"
Character :
"
).append(c).append(
"
\n
"
);
output.append(
"
byte value :
"
).append(b).append(
"
\n
"
);
output.append(
"
int value :
"
).append(i).append(
"
\n
"
);
output.append(
"
short value :
"
).append(s).append(
"
\n
"
);
//
Hex value and binary value
output.append(
"
hex value :
"
).append(hexString).append(
"
\n
"
);
output.append(
"
binary value :
"
).append(binaryString).append(
"
\n
"
);
//
Unicode value in java file & web page with decimal encoding
output.append(
"
unicode value (Base 10):
"
);
output.append(
"
\\u
"
).append(i).append(
"
;
"
).append(
"
\n
"
);
output.append(
"
unicode value (Base 10 in web page):
"
);
output.append(
"
"
).append(i).append(
"
;
"
).append(
"
\n
"
);
//
Unicode value in java file & web page with hexadecimal encoding
output.append(
"
unicode value (Base 16):
"
);
output.append(
"
\\u
"
).append(hexString).append(
"
;
"
).append(
"
\n
"
);
output.append(
"
unicode value (Base 16 in web page):
"
);
output.append(
"
"
).append(hexString).append(
"
;
"
).append(
"
\n
"
);
System.out.println(output.toString());
}
}
最终的测试结果如下:
Original String : 中文
Convert string to bytes array :
byte
[
0
]
=
-
42
byte
[
1
]
=
-
48
byte
[
2
]
=
-
50
byte
[
3
]
=
-
60
Start to convert by character:
Character : 中
byte value :
45
int value :
20013
short value :
20013
hex value :4e2d
binary value :
100111000101101
unicode value (Base
10
):
\u20013
;
unicode value (Base
10
in web page):
20013
;
unicode value (Base
16
):
\u4e2d
;
unicode value (Base
16
in web page):
e2d
;
Character : 文
byte value : -
121
int value :
25991
short value :
25991
hex value :
6587
binary value :
110010110000111
unicode value (Base
10
): \u25991
;
unicode value (Base
10
in web page):
25991
;
unicode value (Base
16
): \u6587
;
unicode value (Base
16
in web page):
6587
;
可以看到在Java中,字符的unicode有两种表示显示:一种是10进制形式,一种是16进制形式。它们可以分别通过:int i = (int)(string.charAt(i))和Integer.toHexString(i);获得。而且在java文件和Web页面,同一个unicode的表示形式是不同。web页面需要用进行转义,在java文件中则使用\u进行转义。
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2010-02-23 16:48
Paul Lin
阅读(2119)
评论(2)
编辑
收藏
所属分类:
J2SE
FeedBack:
#
re: 【Java基础专题】编码与乱码(06)---字符的各种值转换
2010-02-24 05:23 |
tbw
学习了。。。。
回复
更多评论
#
re: 【Java基础专题】编码与乱码(06)---字符的各种值转换
2010-02-24 14:22 |
咖啡妆
期望更深入的讲解
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
【Java基础专题】IO与文件读写---优化搜索程序(01)
【Java基础专题】IO与文件读写---DirectoryWalker和FileFilter的复杂条件使用
【Java基础专题】IO与文件读写---使用DirectoryWalker和FileFilterUtils进行搜索
【Java基础专题】IO与文件读写---慎用FileUtils.writeLines(File, Collection)方法
TSS上关于JDBC操作优化的Tips总结
【Java基础专题】IO与文件读写---对同步/异步和阻塞/非阻塞的理解
【Java基础专题】IO与文件读写---同步/异步与阻塞/非阻塞的区别(转)
【Java基础专题】IO与文件读写---使用Apache commons IO包进行资源遍历
【Java基础专题】IO与文件读写---使用Apache commons IO过滤文件和目录
【Java基础专题】IO与文件读写---使用Apache commons IO操纵底层读写
<
2010年2月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(21)
给我留言
查看公开留言
查看私人留言
随笔分类
J2EE 框架(9)
J2EE基础(4)
J2SE(43)
Java 工具(5)
Oracle Concept(4)
Oracle SQL/PLSQL(9)
Oracle 开发(13)
Oracle 管理(4)
Oracle 调优
Oracle 错误诊断
RoR(19)
UML(3)
Unix / Linux(13)
Web基础(19)
其它技术(7)
感悟(3)
杂项(7)
架构与性能(8)
模式与重构(19)
灌水(8)
电影与音乐(16)
走过的路(1)
软件过程与软件方法(3)
阳光户外(2)
项目管理(36)
随笔档案
2012年2月 (3)
2011年11月 (4)
2011年10月 (1)
2011年9月 (2)
2011年8月 (2)
2011年7月 (5)
2011年6月 (3)
2011年5月 (1)
2011年4月 (1)
2011年3月 (3)
2011年1月 (1)
2010年12月 (1)
2010年11月 (5)
2010年10月 (3)
2010年9月 (1)
2010年7月 (1)
2010年6月 (1)
2010年5月 (4)
2010年4月 (9)
2010年3月 (19)
2010年2月 (8)
2010年1月 (3)
2009年12月 (34)
2009年11月 (1)
2009年10月 (2)
2009年7月 (4)
2009年6月 (5)
2009年5月 (3)
2009年4月 (2)
2009年3月 (1)
2009年2月 (5)
2009年1月 (5)
2008年12月 (13)
2008年11月 (4)
2008年10月 (1)
2008年9月 (6)
2008年8月 (5)
2008年7月 (3)
2008年6月 (31)
2008年5月 (10)
2008年4月 (9)
2008年3月 (7)
2008年2月 (4)
2008年1月 (19)
BlogJava热点博客
BeanSoft
Jack.Wang
如坐春风
诗特林
郑晖
银河使者
阿密果
隔叶黄莺
好友博客
无羽苍鹰
搜索
最新评论
1. re: 【Java基础专题】编码与乱码(01)---编码基础[未登录]
666666666666666666666这几天正在做个类似工程编码出现错误
--李
2. re: 【Java基础专题】IO与文件读写---使用Apache commons IO简化文件读写
不错
--阿斯兰
3. re: 【Java基础专题】编码与乱码(03)----String的toCharArray()方法
多谢分享
--thx
4. re: 【Java基础专题】编码与乱码(05)---GBK与UTF-8之间的转换
评论内容较长,点击标题查看
--karl
5. re: 【Java基础专题】编码与乱码(01)---编码基础[未登录]
谢谢,帮了我大忙!
--小龙
阅读排行榜
1. Oracle中如何插入特殊字符:& 和 ' (多种解决方案)(48355)
2. getOutputStream() has already been called for this response的解决方法(43322)
3. 【Java基础专题】编码与乱码(05)---GBK与UTF-8之间的转换(36956)
4. 360安全卫士误删audiosrv.dll文件造成系统无声的解决方案(21210)
5. Java中读取字节流并按指定编码转换成字符串的方法(17300)
评论排行榜
1. 360安全卫士误删audiosrv.dll文件造成系统无声的解决方案(33)
2. 【原】Oracle开发专题之:时间运算(11)
3. 【Java基础专题】编码与乱码(05)---GBK与UTF-8之间的转换(11)
4. getOutputStream() has already been called for this response的解决方法(10)
5. 【原】Oracle开发专题之:分析函数(OVER)(8)