å¤æjava
å符串çå符éæå¤ç§æ¹æ³ï¼æ们ä¸ä¸è®¨è®ºå¦ä¸ï¼
1ãéè¿ææªç¥ç¼ç å符串,ç¨çæ³çç¼ç å解ç ,è§å¯å符串æ¯ä¸æ¯æ£ç¡®è¿åäºã
åç:åå¦ç®æ ç¼ç 没ææ°ç»ä¸çå符,é£ä¹ç¼ç ä¼ç ´å,æ æ³è¿åã
缺ç¹:åå¦å符å°,èæ£å·§é误ççæ³ç¼ç ä¸æè¿ç§åè,å°±ä¼åºéã
å¦:new String("tested str".getBytes("enc"),"enc")
2ã大å¤æ°æ¶å,æ们åªè¦å¤ææ¬å°å¹³å°ç¼ç åutf8,utf8ç¼ç ç¸å½æè§å¾,æ以å¯ä»¥åææ¯å¦æ¯utf8,å¦å使ç¨æ¬å°ç¼ç ã
åç:åæbyte[]æ¥å¤æè§å¾ã
缺ç¹:ææ¶,个å«æ¬å°ç¼ç åèå¨utf8ä¸ä¹ä¼åºç°,导è´åºé,éè¦åæã
å¦ï¼å¤ææ¯å¦utf-8代ç ï¼
public static boolean isValidUtf8(byte[] b,int aMaxCount){
int lLen=b.length,lCharCount=0;
for(int i=0;i
byte lByte=b[i++];//to fast operation, ++ now, ready for the following for(;;)
if(lByte>=0) continue;//>=0 is normal ascii
if(lByte<(byte)0xc0 || lByte>(byte)0xfd) return false;
int lCount=lByte>(byte)0xfc?5:lByte>(byte)0xf8?4
:lByte>(byte)0xf0?3:lByte>(byte)0xe0?2:1;
if(i+lCount>lLen) return false;
for(int j=0;j=(byte)0xc0) return false;
}
return true;
}
3.æç¼ç è§å,ä¸ååæ¯ç
§ã
ä¼ç¹æ¯éç©æ´å°,缺ç¹æ¯å¤ªè´¹èµæºã