Blogger Scott
一個(gè)utf8轉(zhuǎn)換程序
據(jù)說(shuō)是一個(gè)通用的手機(jī)上使用的UTF8轉(zhuǎn)換程序,先記下來(lái)。
1
private
final
String readUnicodeFileUTF8(String filename)
{
2
StringBuffer sb
=
new
StringBuffer(
256
);
3
try
{
4
int
[] surrogatePair
=
new
int
[
2
];
5
InputStream is
=
this
.getClass().getResourceAsStream(filename);
6
7
int
val
=
0
;
8
int
unicharCount
=
0
;
9
while
((val
=
readNextCharFromStreamUTF8(is))
!=-
1
)
{
10
unicharCount
++
;
11
if
(val
<=
0xFFFF
)
{
12
//
if first value is the Byte Order Mark (BOM), do not add
13
if
(
!
(unicharCount
==
1
&&
val
==
0xFEFF
))
{
14
sb.append((
char
)val);
15
}
16
}
else
{
17
supplementCodePointToSurrogatePair(val, surrogatePair);
18
sb.append((
char
)surrogatePair[
0
]);
19
sb.append((
char
)surrogatePair[
1
]);
20
}
21
}
22
is.close();
23
}
catch
(Exception e)
{}
;
24
25
return
new
String(sb);
26
}
27
28
private
final
static
int
readNextCharFromStreamUTF8(InputStream is)
{
29
int
c
=
-
1
;
30
if
(is
==
null
)
return
c;
31
boolean
complete
=
false
;
32
33
try
{
34
int
byteVal;
35
int
expecting
=
0
;
36
int
composedVal
=
0
;
37
38
while
(
!
complete
&&
(byteVal
=
is.read())
!=
-
1
)
{
39
if
(expecting
>
0
&&
(byteVal
&
0xC0
)
==
0x80
)
{
/**/
/*
10xxxxxx
*/
40
expecting
--
;
41
composedVal
=
composedVal
|
((byteVal
&
0x3F
)
<<
(expecting
*
6
));
42
if
(expecting
==
0
)
{
43
c
=
composedVal;
44
complete
=
true
;
45
//
System.out.println("appending: U+" + Integer.toHexString(composedVal) );
46
}
47
}
else
{
48
composedVal
=
0
;
49
expecting
=
0
;
50
if
((byteVal
&
0x80
)
==
0
)
{
/**/
/*
0xxxxxxx
*/
51
//
one byte character, no extending byte expected
52
c
=
byteVal;
53
complete
=
true
;
54
//
System.out.println("appending: U+" + Integer.toHexString(byteVal) );
55
}
else
if
((byteVal
&
0xE0
)
==
0xC0
)
{
/**/
/*
110xxxxx
*/
56
expecting
=
1
;
//
expecting 1 extending byte
57
composedVal
=
((byteVal
&
0x1F
)
<<
6
);
58
}
else
if
((byteVal
&
0xF0
)
==
0xE0
)
{
/**/
/*
1110xxxx
*/
59
expecting
=
2
;
//
expecting 2 extending bytes
60
composedVal
=
((byteVal
&
0x0F
)
<<
12
);
61
}
else
if
((byteVal
&
0xF8
)
==
0xF0
)
{
/**/
/*
11110xxx
*/
62
expecting
=
3
;
//
expecting 3 extending bytes
63
composedVal
=
((byteVal
&
0x07
)
<<
18
);
64
}
else
{
65
//
non conformant utf-8, ignore or catch error
66
}
67
}
68
}
69
70
}
catch
(Exception e)
{
71
System.out.println(e.toString());
72
}
73
74
return
c;
75
}
76
77
private
final
static
void
supplementCodePointToSurrogatePair(
int
codePoint,
int
[] surrogatePair)
{
78
int
high4
=
((codePoint
>>
16
)
&
0x1F
)
-
1
;
79
int
mid6
=
((codePoint
>>
10
)
&
0x3F
);
80
int
low10
=
codePoint
&
0x3FF
;
81
82
surrogatePair[
0
]
=
(
0xD800
|
(high4
<<
6
)
|
(mid6));
83
surrogatePair[
1
]
=
(
0xDC00
|
(low10));
84
}
posted on 2009-06-07 16:37
江天部落格
閱讀(303)
評(píng)論(0)
編輯
收藏
所屬分類:
Android
、
Java
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
相關(guān)文章:
Android給scrollView截圖超過(guò)屏幕大小形成長(zhǎng)圖
如何獲得谷歌admob廣告條的高度
Android開(kāi)源庫(kù)和開(kāi)源資源
關(guān)于error: Error: String types not allowed (at 'configChanges' with value 'keyboard|keyboardHidden| orientation|screenLayout|uiMode|screenSize|smallestScreenSize').
[轉(zhuǎn)]eclipse android工程沒(méi)有錯(cuò)卻出現(xiàn)紅叉
轉(zhuǎn):android 調(diào)用系統(tǒng)的接口
Eclipse中導(dǎo)入android項(xiàng)目名前有紅叉但項(xiàng)目?jī)?nèi)文件無(wú)錯(cuò)誤問(wèn)題解決方法
彩信閱讀2.1.2版本上線--應(yīng)網(wǎng)友morning要求,新增刪除彩信功能。
Android Intent傳遞對(duì)象和ArrayList
Android事件處理模型二(基于監(jiān)聽(tīng)接口的事件處理)
Powered by:
BlogJava
Copyright © 江天部落格
My Links
BlogJava
首頁(yè)
聯(lián)系
聚合
管理
Blog Stats
Posts - 75
Stories - 2
Comments - 32
Trackbacks - 0
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(11)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
Android(43)
(RSS)
Apache(1)
(RSS)
Falsh(1)
(RSS)
Java(6)
(RSS)
Linux(3)
(RSS)
PALM OS(1)
(RSS)
php(1)
(RSS)
Prestashop(2)
(RSS)
RFID(1)
(RSS)
Windows(1)
(RSS)
Windows 11
(RSS)
微信公眾號(hào)(1)
(RSS)
數(shù)據(jù)庫(kù)(3)
(RSS)
綜合類(6)
(RSS)
隨筆檔案
2024年4月 (1)
2015年10月 (1)
2015年6月 (1)
2015年4月 (3)
2013年10月 (5)
2013年1月 (1)
2012年10月 (1)
2012年3月 (2)
2012年2月 (2)
2011年11月 (2)
2011年10月 (1)
2011年6月 (1)
2011年5月 (3)
2011年1月 (1)
2010年12月 (5)
2010年11月 (3)
2010年3月 (1)
2010年2月 (7)
2010年1月 (4)
2009年12月 (1)
2009年8月 (2)
2009年6月 (4)
2009年5月 (6)
2008年11月 (1)
2008年8月 (1)
2008年2月 (1)
2007年11月 (1)
2007年5月 (1)
2007年4月 (1)
2006年10月 (2)
2006年9月 (1)
2006年8月 (3)
文章分類
Jetty(1)
(RSS)
PALM OS
(RSS)
原創(chuàng)文章
(RSS)
網(wǎng)上摘抄(1)
(RSS)
文章檔案
2007年5月 (1)
2006年8月 (1)
相冊(cè)
我的相冊(cè)
相關(guān)鏈接
Android Plot
江天部落格
江天部落格
搜索
積分與排名
積分 - 249022
排名 - 231
最新隨筆
1.?允許一個(gè)用戶使用一個(gè)以上用戶與服務(wù)器或共享資源的多重連接。中斷與此服務(wù)器或共享資源的所有連接
2.?jquery ui日期選擇器 datepicker
3.?Prestashop如何更改底部Powerdby信息
4.?網(wǎng)站自動(dòng)跳轉(zhuǎn)至http://wpkg.org原因及解決方法
5.?微信公眾號(hào)獲取access_token的PHP代碼
6.?Android給scrollView截圖超過(guò)屏幕大小形成長(zhǎng)圖
7.?如何獲得谷歌admob廣告條的高度
8.?Android開(kāi)源庫(kù)和開(kāi)源資源
9.?關(guān)于error: Error: String types not allowed (at 'configChanges' with value 'keyboard|keyboardHidden| orientation|screenLayout|uiMode|screenSize|smallestScreenSize').
10.?[轉(zhuǎn)]eclipse android工程沒(méi)有錯(cuò)卻出現(xiàn)紅叉
最新評(píng)論
1.?請(qǐng)問(wèn)如何在自己的網(wǎng)站上禁用facebook的插件
請(qǐng)問(wèn)如何在自己的網(wǎng)站上禁用facebook的插件
--liping rosy
2.?re: Android短信備份 無(wú)法看到telephony
/data/data/com.android.providers.telephony/安卓4.2.2無(wú)法看到這個(gè)文件夾,求賜教!
--Ong
3.?re: [轉(zhuǎn)]eclipse android工程沒(méi)有錯(cuò)卻出現(xiàn)紅叉[未登錄](méi)
與虛擬機(jī)有關(guān),將虛擬機(jī)關(guān)掉就可以了
--jerry
4.?re: Eclipse中導(dǎo)入android項(xiàng)目名前有紅叉但項(xiàng)目?jī)?nèi)文件無(wú)錯(cuò)誤問(wèn)題解決方法
>工程在項(xiàng)目列表中刪除(不從磁盤刪除)并重新導(dǎo)入一次
這個(gè)就好了,我是真實(shí)用戶
--tailor
5.?re: Eclipse中導(dǎo)入android項(xiàng)目名前有紅叉但項(xiàng)目?jī)?nèi)文件無(wú)錯(cuò)誤問(wèn)題解決方法
真的不錯(cuò)@tailor
--tailor
閱讀排行榜
1.?Android權(quán)限之sharedUserId和簽名(29165)
2.?Eclipse中導(dǎo)入android項(xiàng)目名前有紅叉但項(xiàng)目?jī)?nèi)文件無(wú)錯(cuò)誤問(wèn)題解決方法(19087)
3.?Installation failed due to invalid APK file!問(wèn)題(16583)
4.?SQLite中的時(shí)間日期函數(shù)(轉(zhuǎn))(14415)
5.?Android短信備份(12910)
評(píng)論排行榜
1.?Android短信備份(6)
2.?Android彩信閱讀軟件MMSViewer,用Gphone看彩信手機(jī)報(bào)非常好用(5)
3.?彩信閱讀2.1.2版本上線--應(yīng)網(wǎng)友morning要求,新增刪除彩信功能。(3)
4.?使用FileFilter查找文件系統(tǒng)(3)
5.?數(shù)據(jù)庫(kù)表中插入重復(fù)數(shù)據(jù)的處理(3)
主站蜘蛛池模板:
中文字幕乱码一区二区免费
|
亚洲av无码一区二区三区人妖
|
精精国产www视频在线观看免费
|
午夜dj在线观看免费视频
|
亚洲伊人久久大香线蕉结合
|
成人免费福利视频
|
avtt天堂网手机版亚洲
|
无码人妻精品中文字幕免费东京热
|
亚洲国产精品午夜电影
|
色婷婷7777免费视频在线观看
|
亚洲乱码在线观看
|
日本免费一区二区三区最新vr
|
亚洲爆乳少妇无码激情
|
亚洲一区精品伊人久久伊人
|
成av免费大片黄在线观看
|
亚洲91av视频
|
亚洲天堂免费在线
|
亚洲第一成年免费网站
|
免费乱理伦在线播放
|
中文字幕无线码免费人妻
|
亚洲AV乱码一区二区三区林ゆな
|
37pao成人国产永久免费视频
|
久久精品国产亚洲αv忘忧草
|
国产精品免费看久久久无码
|
色九月亚洲综合网
|
亚洲免费观看视频
|
97av免费视频
|
亚洲av日韩专区在线观看
|
jlzzjlzz亚洲乱熟在线播放
|
免费国产黄网站在线观看可以下载
|
国产一级高清免费观看
|
中文字幕在线免费观看视频
|
亚洲视频免费一区
|
国产大片51精品免费观看
|
免费精品久久天干天干
|
亚洲娇小性xxxx色
|
超清首页国产亚洲丝袜
|
国产精彩免费视频
|
一个人看的hd免费视频
|
亚洲一级毛片免费在线观看
|
亚洲精品美女久久久久99小说
|