字符串值不正确:列的'\ xEF\xBF\xBD'

Rob*_*t H 12 c# mysql

我有一个表,我需要处理各种角色.字符包括Ø,®等.

我已将我的表设置为utf-8作为默认排序规则,所有列都使用表默认值,但是当我尝试插入这些字符时,我收到错误:字符串值不正确:'\ xEF\xBF\xBD'列为'buyerName'at at第1行

我的连接字符串定义为

string mySqlConn = "server="+server+";user="+username+";database="+database+";port="+port+";password="+password+";charset=utf8;";
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我仍然看到错误.我是否错过了.net连接器或我的MySQL设置?

- 编辑 -

我的(新)C#插入语句如下所示:

MySqlCommand insert = new MySqlCommand( "INSERT INTO fulfilled_Shipments_Data " +
     "(amazonOrderId,merchantOrderId,shipmentId,shipmentItemId,"+
     "amazonOrderItemId,merchantOrderItemId,purchaseDate,"+ ...

      VALUES (@amazonOrderId,@merchantOrderId,@shipmentId,@shipmentItemId,"+
      "@amazonOrderItemId,@merchantOrderItemId,@purchaseDate,"+ 
      "paymentsDate,shipmentDate,reportingDate,buyerEmail,buyerName,"+ ...


       insert.Parameters.AddWithValue("@amazonorderId",lines[0]);
       insert.Parameters.AddWithValue("@merchantOrderId",lines[1]); 
       insert.Parameters.AddWithValue("@shipmentId",lines[2]);
       insert.Parameters.AddWithValue("@shipmentItemId",lines[3]);
       insert.Parameters.AddWithValue("@amazonOrderItemId",lines[4]);
       insert.Parameters.AddWithValue("@merchantOrderItemId",lines[5]);
       insert.Parameters.AddWithValue("@purchaseDate",lines[6]);
       insert.Parameters.AddWithValue("@paymentsDate",lines[7]);

 insert.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

假设这是使用参数化语句的正确方法,它仍然会给出错误

 "Incorrect string value: '\xEF\xBF\xBD' for column 'buyerName' at row 1"
Run Code Online (Sandbox Code Playgroud)

还有其他想法吗?

Eli*_*ing 22

\xEF\xBF\xBD是unicode字符的UTF-8编码U+FFFD.这是一个特殊的角色,也被称为"替换角色".来自维基百科页面的关于特殊unicode字符的引用:

替换字符 (通常是带有白色问号的黑色菱形)是在Specials表中的代码点U + FFFD的Unicode标准中找到的符号.当系统无法将数据流解码为正确的符号时,它用于指示问题.最常见的情况是字体不包含字符,但在数据无效且与任何字符不匹配时也会看到:

因此,您的数据源似乎包含损坏的数据.您也可能尝试使用错误的编码读取数据.线条来自哪里?

如果您无法修复数据,并且您的输入确实包含无效字符,则可以删除替换字符:

lines[n] = lines[n].Replace("\xFFFD", "");
Run Code Online (Sandbox Code Playgroud)