当前位置: 首页 > 面试题库 >

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

姜志
2023-03-14
问题内容

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

我已将表设置为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", "");


 类似资料:
  • 问题内容: 我想打开我的文件并拆分所有数据。 这是我的: 这是我的python代码: 正如您在此处看到的那样,当我打印我的书时,它将this:和this:添加到我的列表中。这些是什么,如何从它们中清除清单。 谢谢。 问题答案: 您的文件开头包含UTF-8 BOM。 要摆脱它,首先将文件内容解码为unicode。 但是最好不要将其编码回,而是使用d文本。有一个好的规则:尽快将所有输入文本数据解码为u

  • 问题内容: 在注意到一个应用程序倾向于由于不正确的字符串值错误而丢弃随机电子邮件之后,我经过了并切换了许多文本列以使用列字符集和默认列归类(),以便它可以接受它们。这修复了大多数错误,并使应用程序在遇到非拉丁电子邮件时也停止出现sql错误。 尽管如此,某些电子邮件仍然导致程序遇到不正确的字符串值错误: 内容列是使用列字符集和列排序规则的数据类型。在此列中没有可切换的标志。 请记住,除非绝对必要,否

  • 我有一个在生产模式下运行的rails应用程序,但是今天当一个用户试图保存记录时突然出现了这个错误。 谢谢

  • 问题内容: 我需要将(4个字节)的char转换为其他字符(在Python中)。这是将其插入到我的utf-8 mysql数据库中,而不会出现诸如以下的错误:“不正确的字符串值:行1的’行’的’\ xF0 \ x9F \ x94 \ x8E’ 通过向mysql插入4字节的unicode引发的警告显示了这样做的方法: 但是,在注释“ …错误的字符范围..”中,我得到与用户相同的错误,这显然是因为我的Py

  • 问题内容: 我想分裂字符串列,其中值 不等于 到 并保存到另一个表,这将是这样的: 这是我的分割字符串代码: 这是我用来调用该函数的代码: 上面的代码给我这个错误: 问题答案: 子查询返回了1个以上的值。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。该语句已终止。 由于您的子查询返回了多行,因此发生了上述错误。尝试执行以下操作: 您会看到它将返回3行,每一项返回一

  • 问题内容: 使用uCanaccess检索保存在桌面中的数据库时出现错误。 我的代码如下: 导入java.util.Scanner; 导入java.sql。*; 公共类dbTest1 { } 我将很乐意为您解决此错误提供任何建议。 谢谢,文斯 问题答案: 好吧,首先,导入您的库(lib文件夹中的jar文件)。http://sourceforge.net/projects/ucanaccess/fil