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

本文关键字:比较 字符 查询 文字符 MySQL | 更新日期: 2023-09-27 18:03:55

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

一些细节:

  • series_titlevarchar(150),排序规则为utf8_general_ci
  • MySqlConnectionConnectionString包含kv对CharSet=utf8_general_ci
  • 数据库确实包含日文字符,并且能够将它们返回给c#客户端-只有当日文字符被发送给它时才会出现问题

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

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

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

编辑:

SET NAMES utf8

我会确保您的数据使用正确的编码存储。对于日文,您可能想要尝试eucjp,在这里您可以了解更多关于字符编码的信息。看起来您可能还需要BOM。祝你好运,让我知道你过得怎么样。