問題:
字串: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個英文本元,為了形式上...