含有中文字串的擷取問題!

2021-04-15 14:26:16 字數 619 閱讀 1896

問題:

字串:music《美麗的草原我的家》。該字串的長度即str.length()為:17,而目前需要存入資料庫對應的字段長度為:16。所以必須對字串進行擷取。而前16個位元組中,「原」字只有半個。這樣存入資料庫確對會出現「?」。所以必須判斷是否是半個漢字,即只能存入「music《美麗的草」。

分析:漢字是雙位元組編碼,它為了能夠與英文本元分開,每個位元組的最高位一定為1。如果是漢字,那麼這個位元組就是小於0的。這個函式就是通過這一原理實現的。所以要通過getbytes()轉化為byte型,再比較與零的大小。  

getbytes()是把乙個字串轉成乙個byte陣列,因為計算機的資料都是基於字元的,也就是說乙個字串實際上就是乙個字元流,因此可以轉為字元陣列。

程式:public   static   string   getstr(string   src,   int   len)     

if(flag%2!=0)   len--;          

byte   d   =   new   byte[len];  

system.arraycopy(s,   0,   d,   0,   len);  

return   new   string(d);  

}   

Python中文字串擷取問題

先來看個例子程式設計客棧 程式設計客棧 coding utf8 s u 中文擷取 s.decode utf8 0 3 encode utf8 www.cppcns.com 結果u 中文擷取 延伸閱讀 utf 8中的漢字占用多少位元組?佔2個位元組的 佔3個位元組的 基本等同於gbk,含21000多個...

PHP擷取中文字串的問題

以下 試用於gb2312編碼,擷取中文字串是php中乙個頭疼的問題,解決方法是根據值是否大於等於128來判斷是否是雙位元組字元,以避免出現亂碼的情況。但中英文混合 特殊符號等問題總是存在,現在寫乙個比較全面的,僅供參考 程式說明 1.len 引數以中文字元為標準,1len等於2個英文本元,為了形式上...

PHP擷取中文字串的問題

以下 試用於gb2312編碼,擷取中文字串是php中乙個頭疼的問題,解決方法是根據值是否大於等於128來判斷是否是雙位元組字元,以避免出現亂碼的情況。但中英文混合 特殊符號等問題總是存在,現在寫乙個比較全面的,僅供參考 程式說明 1.len 引數以中文字元為標準,1len等於2個英文本元,為了形式上...