我在存檔的時候.假如果我要存"牛犇"的時,發生錯誤:
存檔出錯
您的錯誤原因為: 
因為正負號不符合或資料溢位之外的原因,無法轉換命令 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);

解决方案 »

  1.   

    newRow["PRODUCT_NAME"] = System.Text.UTF8Encoding.UTF8.GetString(utf8Bytes1);
      

  2.   

    newRow["PRODUCT_NAME"] = System.Text.UTF8Encoding.UTF8.GetString(utf8Bytes1);
    正解,
      

  3.   

    好像不行.....鬱悶中...存檔出錯
    您的錯誤原因為: 因為正負號不符合或資料溢位之外的原因,無法轉換命令 parameter[1] 'PRODUCT_NAME' 資料值。因為正負號不符合或資料溢位之外的原因,無法轉換命令 parameter[5] 'COMMON_NAME' 資料值。
      

  4.   

    try
    newRow["PRODUCT_NAME"] = System.Text.UTF8Encoding.Default.GetString(utf8Bytes1);总之 编码和解码的格式需一致
      

  5.   

    编码是可以尝试使用
    utf8Bytes1= System.Text.UTF8Encoding.UTF8.GetBytes(gridRow.Cells.FromKey("PRODUCT_NAME").Text);解码时newRow["PRODUCT_NAME"] = System.Text.UTF8Encoding.UTF8.GetString(utf8Bytes1);
      

  6.   

    将System.Text.UTF8Encoding 改为 System.Text.UnicodeEncoding (即UTF16)
    也就是unicode编码默认是指UTF16....
      

  7.   

    我想實現的是.在存的時候,罕見字會變成"?"而常見字不會.數據庫為oracle9.2
    現在的問題是,只要存入的是漢字都會變為'?'.
      

  8.   

    如果是oracle10G的話查詢出來罕見字是可以看到的.在9.2的就是罕見字存入時是'?'常見字存入正常..不知道朋友們明白我的意思了沒有..
      

  9.   

    数据库里汉字变 ?? 的原因我认为是 数据库中字段类型 设置的问题,
    如果你要用utf8 或 unicode 编码的字符, 数据库中这个字段的类型必须是nchar 或nvarchar,而不能是 char/varchar不知是否帮了楼主