1、
const
char
*str =
"test測試test"
;
while
(*str)
else
}
2、
參看下面的字串轉換函式。
/**
* 用getbytes(encoding):返回字串的乙個byte陣列
* 當b[0]為 63時,應該是轉碼錯誤
* a、不亂碼的漢字字串:
* 1、encoding用gb2312時,每byte是負數;
* 2、encoding用iso8859_1時,b[i]全是63。
* b、亂碼的漢字字串:
* 1、encoding用iso8859_1時,每byte也是負數;
* 2、encoding用gb2312時,b[i]大部分是63。
* c、英文本串
* 1、encoding用iso8859_1和gb2312時,每byte都大於0;
* 總結:給定乙個字串,用getbytes("iso8859_1")
* 1、如果b[i]有63,不用轉碼; a-2
* 2、如果b[i]全大於0,那麼為英文本串,不用轉碼; b-1
* 3、如果b[i]有小於0的,那麼已經亂碼,要轉碼。 c-1
*/ private static string togb2312(string str)
} } catch (unsupportedencodingexception e)
return retstr;
} 3、
unsigned
char
*str =
"test測試test"
;
int
length;
int
i;
length =
strlen
(str);
for
(i = 0; i < length - 1; i++)
}
unsignedchar*str="test測試test";//把字串換成「漢a」試試,結果為2
有人說:「乙個gbk漢字要佔兩個char空間(二位元組),而且第乙個位元組裡的值是小於0的。可以據此判斷是否為漢字。」
1、為什麼第乙個位元組的值小於0呢?
2、如果僅通過判斷第乙個位元組如果小於0,則該位元組和下乙個位元組就組成乙個漢字,這種邏輯是否保險?
3、因為還看到有人說,gbk編碼的漢字有高位和低位兩位,第乙個是低位吧?需要第乙個位元組在160-254之間,第二個位元組在64-254之間,這樣是不是比2中提到的方法要保險?
4、如果db中的字符集是simplified chinese_china.zhs16gbk,這個是gbk字符集?gbk相容gb2312
似乎有些字符集中有些漢字佔三個位元組
「通過判斷第乙個位元組如果小於0,則該位元組和下乙個位元組就組成乙個漢字」
//gbk漢字內碼範圍
//81-a0 ,40-7e 80-fe
//aa-af ,40-7e 80-a0
//b0-d6 ,40-7e 80-fe
//d7 ,40-7e 80-f9
//d8-f7 ,40-7e 80-fe
//f8-fe ,40-7e 80-a0
例如://81-a0 ,40-7e 80-fe
表示字元的ascii碼要在129-160,64-126,128-254這三個區間段內
4、 在工作中,遇到要擷取字串在螢幕上顯示出來,因為字串帶有漢字,如果擷取不好,會引起亂碼,寫了下面的函式
在uclinux下與vc6.0中測試可以通過。
view plaincopy to clipboardprint?
1. /*擷取字串
2. name :要擷取的字串
3. store:要儲存的字串
4. len:要擷取的長度
5. */
6. void split_name( char * name , char * store , int len )
7. ;
10.
11. if ( strlen(name)
12.
16.
17. //從第1個位元組開始判斷
18. while( i < len )
19.
25. i = i > len ? i-3 :i-1;
26. strncpy( store , name , i+1 ); //擷取前i+1位
27. *(store+i+1)=0;
28. strcpy( strtemp , name + i + 1 );
29. strcpy( name , strtemp );
30. }
擷取字串(包括漢字)
程式設計 編寫乙個擷取字串的函式,輸入為乙個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截半個,如 我 abc 4,應該截為 我 ab 輸入 我 abc 漢 def 6,應該輸出為 我 abc 而不是 我abc 漢的半個 public class splitstr 計算輸入字串的總位...
C 中擷取字串
string substring int beginindex string substring int beginindex,int endindex string.substring int32 子字串從指定的字元位置開始。string.substring int32,int32 子字串從指定的...
C 擷取字串
1.根據單個分隔字元用split擷取 string st gt123 1 string sarray st.split 即可得到sarray 0 gt123 sarray 1 1 2.利用多個字元來分隔字串 string str gtazb jiangjben 123 string sarray s...