tim-wu
備忘: UTF-8的格式
http://www.google.com/search?hl=zh-CN&q=UTF-8+0x7FF&btnG=Google+%E6%90%9C%E7%B4%A2&lr=
java中一個char對應一個int,長度為32bit
而utf-8保存一個char時,長度為1-3個byte,也就是8bit-24bit。
其中code<= 0x7F的,保存為1個byte
(code >= 0x80) && (code <= 0x7FF)的,保存為2個byte
code>0x800的,保存為3個byte
因此lucene中,IndexOutput.writeChars()函數的代碼為
public
void
writeChars(String s,
int
start,
int
length)
throws
IOException
{
final
int
end
=
start
+
length;
for
(
int
i
=
start; i
<
end; i
++
)
{
final
int
code
=
(
int
) s.charAt(i);
if
(code
>=
0x01
&&
code
<=
0x7F
)
writeByte((
byte
) code);
else
if
(((code
>=
0x80
)
&&
(code
<=
0x7FF
))
||
code
==
0
)
{
writeByte((
byte
) (
0xC0
|
(code
>>
6
)));
writeByte((
byte
) (
0x80
|
(code
&
0x3F
)));
}
else
{
writeByte((
byte
) (
0xE0
|
(code
>>>
12
)));
writeByte((
byte
) (
0x80
|
((code
>>
6
)
&
0x3F
)));
writeByte((
byte
) (
0x80
|
(code
&
0x3F
)));
}
}
}
發表于 2007-09-12 17:19
鵬飛萬里
閱讀(717)
評論(3)
編輯
收藏
評論
#
re: 備忘: UTF-8的格式
修正一下,還有4 bytes的utf-8字符集
http://m.tkk7.com/tim-wu/archive/2007/12/07/165989.html
鵬飛萬里
評論于 2008-01-09 17:37
回復
更多評論
#
re: 備忘: UTF-8的格式
從這看出Lucene只支持到了BMP(3 bytes utf-8),估計是因為J2SE 1.4中的字符處理是基于Unicode 3.0標準的。
目前完整的unicode需要4 bytes utf-8才能實現。
參考
http://zh.wikipedia.org/wiki/UTF-8
http://m.tkk7.com/tim-wu/archive/2008/01/25/177788.html
另:
Java 1.0 supports Unicode version 1.1.
Java 1.1 onwards supports Unicode version 2.0.
J2SE 1.4中的字符處理是基于Unicode 3.0標準的。
J2SE v 1.5 supports Unicode 4.0 character set.
而:
Unicode 3.0:1999年九月;涵蓋了來自ISO 10646-1的十六位元通用字元集(UCS)基本多文種平面(Basic Multilingual Plane)
Unicode 3.1:2001年三月;新增從ISO 10646-2定義的輔助平面(Supplementary Planes)
鵬飛萬里
評論于 2008-01-25 22:29
回復
更多評論
#
re: 備忘: UTF-8的格式
補充:
BMP中約定了:
D800-DBFF:High-half zone of UTF-16
DC00-DFFF:Low-half zone of UTF-16
因此UTF-8中約定,D800-DFFF無意義。
當然,這兒lucene的實現是可靠的并且可逆的轉換,但它其實使用2個UTF-8來表示本應該用一個4 bytes 來表示的UTF-8符,也就是輔助平面的字符
BMP
http://zh.wikipedia.org/w/index.php?title=%E5%9F%BA%E6%9C%AC%E5%A4%9A%E6%96%87%E7%A8%AE%E5%B9%B3%E9%9D%A2&variant=zh-cn
輔助平面
http://zh.wikipedia.org/wiki/%E8%BE%85%E5%8A%A9%E5%B9%B3%E9%9D%A2
鵬飛萬里
評論于 2008-01-26 01:34
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
<
2008年1月
>
日
一
二
三
四
五
六
30
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
29
30
31
1
2
3
4
5
6
7
8
9
導航
BlogJava
首頁
發新隨筆
發新文章
聯系
聚合
管理
統計
隨筆: 28
文章: 0
評論: 38
引用: 1
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(4)
給我留言
查看公開留言
查看私人留言
我參與的團隊
WebGIS開發設計組(0/0)
隨筆檔案
2008年2月 (4)
2008年1月 (6)
2007年12月 (2)
2007年11月 (2)
2007年9月 (8)
2007年3月 (1)
2006年5月 (4)
2006年4月 (1)
搜索
最新評論
1.?re: 關于Javascript的內存泄漏問題的整理稿
很有幫助!謝謝
--selma
2.?re: 關于Javascript的內存泄漏問題的整理稿
對象是值傳遞的,所以第一段代碼不可能是js對象和dom對象的循環引用,而是dom自身的循環引用
--axiheyhey
3.?re: 關于Javascript的內存泄漏問題的整理稿[未登錄]
評論內容較長,點擊標題查看
--鵬飛萬里
4.?re: 關于Javascript的內存泄漏問題的整理稿
評論內容較長,點擊標題查看
--goofect
5.?re: 關于Javascript的內存泄漏問題的整理稿
評論內容較長,點擊標題查看
--goofect
閱讀排行榜
1.?關于Javascript的內存泄漏問題的整理稿(18604)
2.?關于google map api中的球平投影算法接口: GProjection和GMercatorProjection類(4823)
3.?Lucene如何控制segments的數量?(4673)
4.?javascript的prototype(2523)
5.?Java7 VB2008都開始支持Lambda(Closure)了(2362)
評論排行榜
1.?關于Javascript的內存泄漏問題的整理稿(17)
2.?關于google map api中的球平投影算法接口: GProjection和GMercatorProjection類(7)
3.?備忘: UTF-8的格式(3)
4.?Lucene如何控制segments的數量?(3)
5.?復雜度為log(n)的排序堆棧算法(2)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 鵬飛萬里
主站蜘蛛池模板:
亚洲精品视频免费看
|
亚洲免费无码在线
|
亚洲日本乱码一区二区在线二产线
|
免费看h片的网站
|
亚洲精品国产情侣av在线
|
免费视频成人片在线观看
|
亚洲一区二区三区高清
|
全免费a级毛片免费看
|
亚洲AV无码专区亚洲AV伊甸园
|
a视频在线免费观看
|
亚洲国产成人片在线观看无码
|
久久伊人久久亚洲综合
|
亚洲一区二区在线免费观看
|
亚洲综合精品香蕉久久网97
|
2021在线观看视频精品免费
|
精品亚洲成A人无码成A在线观看
|
国产成人无码综合亚洲日韩
|
久久久久久久久久久免费精品
|
久久久久亚洲AV成人网人人网站
|
精品国产免费人成网站
|
亚洲国产人成在线观看69网站
|
黄在线观看www免费看
|
亚洲欧好州第一的日产suv
|
无码欧精品亚洲日韩一区夜夜嗨
|
国产99精品一区二区三区免费
|
wwwxxx亚洲
|
亚洲国产成人精品久久久国产成人一区二区三区综
|
亚洲av午夜成人片精品电影
|
花蝴蝶免费视频在线观看高清版
|
久久丫精品国产亚洲av
|
在线jyzzjyzz免费视频
|
国产无限免费观看黄网站
|
亚洲精品中文字幕麻豆
|
国产又粗又长又硬免费视频
|
亚洲最大天堂无码精品区
|
亚洲Av无码国产情品久久
|
最近中文字幕电影大全免费版
|
黄色网站软件app在线观看免费
|
亚洲人成免费电影
|
亚洲AV伊人久久青青草原
|
91精品视频在线免费观看
|