Fastdb 之中文字元擷取錯誤的問題

2021-07-04 23:32:29 字數 762 閱讀 7226

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...