我在存檔的時候.假如果我要存"牛犇"的時,發生錯誤:
存檔出錯
您的錯誤原因為:
因為正負號不符合或資料溢位之外的原因,無法轉換命令 parameter[1] 'PRODUCT_NAME' 資料值。
因為正負號不符合或資料溢位之外的原因,無法轉換命令 parameter[5] 'COMMON_NAME' 資料值。改了代碼,每次存入的都是"System.Byte[]"沒轉換對??????
修改後的代碼如下:
System.Text.UTF8Encoding uen = new System.Text.UTF8Encoding();
byte[] utf8Bytes1 = uen.GetBytes(gridRow.Cells.FromKey("PRODUCT_NAME").Text);
byte[] utf8Bytes2 = uen.GetBytes(gridRow.Cells.FromKey("COMMON_NAME").Text);newRow["PRODUCT_NAME"] = Encoding.Convert(Encoding.UTF8, Encoding.Unicode,utf8Bytes1);
newRow["COMMON_NAME"] = Encoding.Convert(Encoding.UTF8,Encoding.Unicode,utf8Bytes2);
存檔出錯
您的錯誤原因為:
因為正負號不符合或資料溢位之外的原因,無法轉換命令 parameter[1] 'PRODUCT_NAME' 資料值。
因為正負號不符合或資料溢位之外的原因,無法轉換命令 parameter[5] 'COMMON_NAME' 資料值。改了代碼,每次存入的都是"System.Byte[]"沒轉換對??????
修改後的代碼如下:
System.Text.UTF8Encoding uen = new System.Text.UTF8Encoding();
byte[] utf8Bytes1 = uen.GetBytes(gridRow.Cells.FromKey("PRODUCT_NAME").Text);
byte[] utf8Bytes2 = uen.GetBytes(gridRow.Cells.FromKey("COMMON_NAME").Text);newRow["PRODUCT_NAME"] = Encoding.Convert(Encoding.UTF8, Encoding.Unicode,utf8Bytes1);
newRow["COMMON_NAME"] = Encoding.Convert(Encoding.UTF8,Encoding.Unicode,utf8Bytes2);
正解,
您的錯誤原因為: 因為正負號不符合或資料溢位之外的原因,無法轉換命令 parameter[1] 'PRODUCT_NAME' 資料值。因為正負號不符合或資料溢位之外的原因,無法轉換命令 parameter[5] 'COMMON_NAME' 資料值。
newRow["PRODUCT_NAME"] = System.Text.UTF8Encoding.Default.GetString(utf8Bytes1);总之 编码和解码的格式需一致
utf8Bytes1= System.Text.UTF8Encoding.UTF8.GetBytes(gridRow.Cells.FromKey("PRODUCT_NAME").Text);解码时newRow["PRODUCT_NAME"] = System.Text.UTF8Encoding.UTF8.GetString(utf8Bytes1);
也就是unicode编码默认是指UTF16....
現在的問題是,只要存入的是漢字都會變為'?'.
如果你要用utf8 或 unicode 编码的字符, 数据库中这个字段的类型必须是nchar 或nvarchar,而不能是 char/varchar不知是否帮了楼主