fastdb c#版本中,如果定義字段型別為 cli.fieldtype.cli_asciiz,使用的過程中插入中文字符集會出現亂碼的情況,
追查code發現是在對字串緩衝區copybufferdata的過程中直接fastdb直接使用了s.length獲取了字元個數,而不是獲取位元組數,由於中文佔位兩個位元組,所以導致資料copy不全,從而出現亂碼。
不多說,修正**如下:
protected int bytelengh(string str)
else}}
return j;
}protected unsafe void setvalue(object value)
finally
break;
case cli.fieldtype.cli_array_of_int1:
if (value is byte)
break;
} else
default:
throw new clierror("unsupported type: "+enum.getname(typeof(cli.fieldtype), (cli.fieldtype)((cli.unmanagedbuffer*)buffer.topointer())->type));}}
也可以使用system.text.encoding.default.getbytes(s).length,不過如果是奇葩系統長度可能會有變化,沒測試過,有興趣的同學可以試下
希望能對使用c#開發fastdb的朋友有所幫助
mysql擷取中文字元 mysql 擷取中文字元
1 char n 型別 char型別時定長的型別,即當定義的是char 10 輸入的是 abc 這三個字元時,它們佔的空間一樣是10個位元組,包括7個空位元組。當輸入的字元長度超過指定的數時,char會擷取超出的字元。而且,當儲存char值時,mysql是自動刪除輸入字串末尾的空格。char是適合儲...
python中文字元擷取亂碼
python學習中 python中關於中文字串擷取的問題 中文字元擷取亂碼 在python中乙個中文字元佔三個英文本元,看以下 print str 0 6 擷取啤酒兩個中文字元,需要從0開始截到6 print str 0 5 輸出 啤酒啤 就會出現亂碼 usr bin python coding u...
PHP函式substr 擷取中文字元亂碼
substr 函式在擷取字串時是按位元組來擷取的,在gbk gb2312編碼下,乙個中文佔2個位元組 utf 8 unicode編碼下,乙個中文佔3個位元組。text 竹杖芒鞋輕勝馬,誰怕?一蓑煙雨任平生。echo text n 竹杖芒鞋輕勝馬,誰怕?一蓑煙雨任平生。echo strlen text...