2013-02-08 65 views

回答

0

在讀取char s時計算字節數。

對於每個char c

if(c<128) 
    bytesCount++; 
else if (c<2048) 
    bytesCount+=2; 
else 
    bytesCount+=3; 

參見encodeing定義wikipedia URF8

+0

更大字符數目增加2或3是不夠的。 UTF-8代碼序列可以長達6個字節(並且爲單個抽象字符產生多個Java char值),低編號字符*可以用長字節序列而不是通常的短字符序列表示。 – Wyzard 2013-02-08 23:40:07

+0

@Wyzard:除了UTF-8代碼序列長達4個字節這個事實之外,你的評論是絕對正確的。引用[Wikipedia](http://en.wikipedia.org/wiki/UTF-8):_ 2003年11月,UTF-8被RFC 3629限制爲以'U + 10FFFF'結尾,以便匹配UTF-16字符編碼。這刪除了所有5字節和6字節的序列,以及大約一半的4字節序列。[ – jlordo 2013-02-08 23:43:40

+0

]這是正確的,但是對於高達65535的字符值不適用,只有java支持這一點[但可以隨意實現最多6字節編碼(見維基百科鏈接)] – MrSmith42 2013-02-08 23:43:49