字符串值错误:列的'\ xEF \ xBF \ xBD'

我有一张桌子需要处理各种字符。字符包括Ø,®等。

我已将表设置为utf-8作为默认排序规则,所有列均使用表默认值,但是当我尝试插入这些字符时,我得到了错误:错误的字符串值:’\ xEF \ xBF \

xBD’对应于’buyerName’列第1行

我的连接字符串定义为

string mySqlConn = "server="+server+";user="+username+";database="+database+";port="+port+";password="+password+";charset=utf8;";

我不知道为什么我仍然看到错误。.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();

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

 "Incorrect string value: '\xEF\xBF\xBD' for column 'buyerName' at row 1"

还有其他想法吗?

回答:

\xEF\xBF\xBD是unicode字符的UTF-8编码U+FFFD。这是一个特殊字符,也称为“替换字符”。维基百科页面上有关特殊unicode字符的引文:

替换字符(通常是带有白色问号的黑色菱形)是在Unicode标准的Specials表中的代码点U +

FFFD处找到的符号。当系统无法将数据流解码为正确的符号时,它用于指示问题。最常见的情况是字体不包含字符,但是当数据无效且不匹配任何字符时也可以看到:

因此,看来您的数据源包含损坏的数据。您也可能尝试使用错误的编码来读取数据。这些线从哪里来?

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

lines[n] = lines[n].Replace("\xFFFD", "");

以上是 字符串值错误:列的'\ xEF \ xBF \ xBD' 的全部内容, 来源链接: utcz.com/qa/433552.html

回到顶部