俊星的BLOG
導航
BlogJava
首頁
新隨筆
聯系
聚合
管理
<
2009年5月
>
日
一
二
三
四
五
六
26
27
28
29
30
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
29
30
31
1
2
3
4
5
6
統計
隨筆 - 50
文章 - 0
評論 - 6
引用 - 0
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆分類
代碼庫(7)
(rss)
隨筆檔案
2010年11月 (3)
2010年10月 (12)
2009年6月 (5)
2009年5月 (22)
2009年4月 (8)
最新隨筆
1.?實現變更統計
2.?切換IE8中碰到的問題
3.?發布FWMS
4.?ActiveMQ初探
5.?CAS初步配置
搜索
最新評論
1.?re: JAVA圖像縮放處理[未登錄]
不錯的方法
--test
2.?re: freetts初探
學習了! 就是不清楚為啥在eclipse下跑不起來...
--apiao
3.?re: freetts初探
System property "mbrola.base" is undefined. Will not use MBROLA voices.
這個問題怎么解決啊?
--瓏兒
4.?re: ActiveMQ初探
測試通過。多謝
--71569973
5.?登錄網站
評論內容較長,點擊標題查看
--ahome
閱讀排行榜
1.?ftp的port和pasv模式(轉)(8033)
2.?JAVA圖像縮放處理(4183)
3.?Nutz初步試用(4109)
4.?Window下FTP命令使用(3520)
5.?freetts初探(3430)
6.?ActiveMQ初探(2909)
7.?MYSQL Access denied 問題的解決(2345)
8.?HTTP Client及HTTPS初探(1990)
9.?JAVA單向加密(MD5,SHA,MAC)(1267)
10.?CAS認證初探(1156)
評論排行榜
1.?freetts初探(2)
2.?HTTP Client及HTTPS初探(2)
3.?ActiveMQ初探(1)
4.?JAVA圖像縮放處理(1)
5.?我的DWR之DefaultContainer(0)
JAVA字符編碼
測試代碼:
public
static
void
main(String[] args)
{
Locale.setDefault(Locale.US);
String str
=
"
中G中
"
;
String codes[]
=
{
"
iso8859-1
"
,
"
utf-8
"
,
"
utf-16
"
,
"
unicode
"
,
"
gbk
"
,
"
gb2312
"
}
;
try
{
System.out.println(str);
System.out.println(
"
default code:
"
+
System.getProperty(
"
file.encoding
"
));
for
(String s : codes)
{
System.out.println(s
+
"
:
"
+
toHex(str.getBytes(s)));
}
}
catch
(UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
private
static
String toHex(
byte
[] buffer)
{
StringBuffer sb
=
new
StringBuffer(buffer.length
*
3
);
for
(
int
i
=
0
; i
<
buffer.length; i
++
)
{
sb.append(Character.forDigit((buffer[i]
&
0xf0
)
>>
4
,
16
));
sb.append(Character.forDigit(buffer[i]
&
0x0f
,
16
));
sb.append(
"
"
);
}
return
sb.toString();
}
輸出如下:
中G中
default code:GBK
iso8859-
1
: 3f
47
3f
utf-
8
: e4 b8 ad
47
e4 b8 ad
utf-
16
: fe ff 4e 2d
00
47
4e 2d
unicode: ff fe 2d 4e
47
00
2d 4e
gbk: d6 d0
47
d6 d0
gb2312: d6 d0
47
d6 d0
相關說明:
1、通過System.getProperty("file.encoding")獲取到當前JVM的默認字符編碼方式,如GBK
2、iso8859-1則是應用于英文和歐洲其他語言的單字節編碼字符集,“3f”其實對應就是“?”。
3、utf-8則是unicode編碼的一種轉換方式(Unicode Transformation Format),兼容于ASCII編碼,如對于中文則使用3個字節來存儲,對于英文使用一個字節存儲。
4、utf-16是unicode編碼的另一種轉換方式,每個直接都采用2個字節來存儲,所以不兼容于ASCII;
其中“fe ff”是Byte Order Mark(BOM)表示采用的編碼方式為utf-16。
5、此處的unicode輸出和utf-16本質相同,只不過大小尾序的問題導致單個字節輸出順序相反;
其中對于windows和linux平臺的utf-16默認采用小尾序(LE little Endion),mac平臺采用大尾。
6、gbk和gb2312是中文字符集,對于每個字符均采用2個字節存儲,其中gbk兼容gb2312并且還可表示繁體。
關于存儲字節的計算,假設現在有N個中文和M個英文字符,則如下的計算方式(編碼方式:字節數):
GBK:2*N+M
UTF-8:3*N+M
UTF-16:2*(N+M+1)
ISO8859-1:N+M
posted on 2009-05-26 00:12
俊星
閱讀(221)
評論(0)
編輯
收藏
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Powered by:
BlogJava
Copyright © 俊星
主站蜘蛛池模板:
林州市
|
蚌埠市
|
白城市
|
建始县
|
宣武区
|
琼海市
|
讷河市
|
塔城市
|
舟山市
|
尼玛县
|
和林格尔县
|
武夷山市
|
四平市
|
尉氏县
|
昭通市
|
永平县
|
龙胜
|
报价
|
宜兴市
|
东宁县
|
石河子市
|
麦盖提县
|
瓮安县
|
南川市
|
怀远县
|
木兰县
|
车险
|
吉首市
|
清丰县
|
太保市
|
万山特区
|
安化县
|
达日县
|
中牟县
|
金秀
|
江山市
|
博兴县
|
乌恰县
|
五家渠市
|
鸡东县
|
金华市
|