MySQL将查询中的日文字符作为问号进行比较

时间:2013-03-15 02:25:30

标签: c# mysql character-encoding localization

我有一个MySQL数据库,其中包含一些varchar字段,可以包含拉丁字符或日文字符。有些条目包含日文字符,这不是问题。但是,从我的C#代码中,使用MySqlConnection,我无法在WHERE子句中使用日语字符获得正确的结果。它似乎比较日语字符,好像它们是问号。例如,WHERE series_title LIKE '%未来警%'的查询不返回series_title包含“未来警”的值,而是返回series_title包含“???”的所有条目。

一些细节:

  • series_titlevarchar(150),其排序为utf8_general_ci
  • ConnectionString的{​​{1}}包含kv对MySqlConnection
  • 数据库确实包含日文字符,并且可以将它们返回给C#客户端 - 只有日文字符被发送到它时才会出现问题

2 个答案:

答案 0 :(得分:4)

尝试将charset=utf8添加到您的连接字符串中:

server=server;uid=my_user;password=pass;database=db;charset=utf8;

编辑:

尝试在connect:

之后执行此sql

SET NAMES utf8

答案 1 :(得分:0)

我会确保使用right encoding存储您的数据。对于日语,你可能想尝试eucjp,你可以找到more than you ever wanted to know about character encoding here。它看起来像你may also need the BOM。祝你好运,让我知道你是怎么过的。