MySql C#插入错误。字符串值不正确:'\ xE1ra'

时间:2012-09-12 07:22:48

标签: c# .net mysql mysql-workbench

我正在使用C#.NET Mysql Connector,并且在运行此查询时:

INSERT INTO convos (`userid`,`time`,`from`,`content`,`read`,`deleted`, `ip`, `source`, `charname`, `to`) VALUES ('3', '1347396787', 'Chára', '........', '0', '0', '0.0.0.0:0000', 'C', 'óóóíííí', 'óóóíííí');

我收到以下错误:

  

字符串值不正确:第1行“from”列的'\ xE1ra'

我理解我的编码,一切都配置为utf8,utf8_general_ci。为utf8配置数据库,表和列。数据从utf8中的客户端发送。

如果我使用第三方工具,如Workbench插入查询或使用mysql命令行,它可以正常工作。我不知道连接器是否有错误,或者我需要在插入之前使用值做其他事情吗?

有什么想法吗?

由于

mysql中是否有任何内容可以转换为正确的类型?

6 个答案:

答案 0 :(得分:1)

我相信你需要改变列的字符集:

使用以下代码表示使用UTF-8的那些列。

ALTER TABLE database.table MODIFY COLUMN col VARCHAR(255)  
CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

答案 1 :(得分:1)

Unicode string prefix with N

首先查看你的表convos并确保列数据类型是nc​​har,nvarchar之一,当你在SQL Server中处理Unicode字符串常量时,必须在所有Unicode字符串前面加上前缀N

丙氨酸Tyr:

    insertQuery = "INSERT INTO convos (`userid`,`time`,`from`,`content`,`read`,`deleted`, `ip`, `source`, `charname`, `to`) VALUES
 (N'3', N'1347396787', N'Chára', N'........', N'0', N'0', N'0.0.0.0:0000', N'C', N'óóóíííí', N'óóóíííí')";

答案 2 :(得分:1)

我想出来了,它需要一段时间,但似乎我经常设置字符集。数据库,表,列都是UTF8。当我建立连接时,我在连接字符串中有“CHARSET = UTF8”。每当我建立连接时,我也在运行“SET NAMES'utf8'COLLATE'utf8_general_ci'”。我放弃了CHARSET = UTF8和“SET NAMES'utf8'COLLATE'utf8_general_ci'”,现在它全部正常工作。

答案 3 :(得分:0)

更新

INSERT INTO convos (`userid`,`time`,`from`,`content`,`read`,`deleted`, `ip`, `source`, `charname`, `to`) VALUES ('3', '1347396787', 'Chara', '........', '0', '0', '0.0.0.0:0000', 'C', 'óóóíííí', 'óóóíííí');

我认为你的第3个值中的“chara”会给它

答案 4 :(得分:0)

对于已经尝试过所有建议但没有任何工作的人(比如我自己),有必要检查您的字段在C#中映射到哪些MySQL类型。我的文本字段自动映射为 MySqlDbType.Blob ,这导致了错误。我将类型更改为 MySqlDbType.Text ,我不再看到错误。

这是我对类似线程的原始回复: https://stackoverflow.com/a/16989466/2199026

答案 5 :(得分:0)

配置mysql如下。从java或C#

插入mysql时,它将解决unicode错误

enter image description here