代码之家  ›  专栏  ›  技术社区  ›  Louisa

MySQL:非英语字符会扰乱我们的选择查询

  •  -1
  • Louisa  · 技术社区  · 8 年前

    在MySql数据库上执行选择查询时遇到问题。

    此查询工作正常:

    SELECT name FROM products WHERE brand = 'nike'
    

    这个没有:

    SELECT name FROM products WHERE brand = 'tøj'
    

    有1000多个品牌为“tj”的产品,所以我猜问题与非英语字符有关。

    奇怪的是,只有当通过Wordpress/PHP运行查询时,事情才不起作用。如果我跑 SELECT name FROM products WHERE brand = 'tøj' 通过SQLYog,我得到了预期的结果。

    有人知道如何解决这个问题吗?

    谢谢

    2 回复  |  直到 8 年前
        1
  •  0
  •   Hitesh Vala Ahir    8 年前

    指定每个数据库的字符设置。要创建数据库,使其表将使用给定的默认字符集和排序规则进行数据存储,请使用 CREATE DATABASE 声明如下:

    CREATE DATABASE mydb
      DEFAULT CHARACTER SET utf8
      DEFAULT COLLATE utf8_general_ci;
    

    在数据库中创建的表将使用 utf8 utf8_general_ci 默认情况下,用于任何字符列。

    在服务器启动时指定字符设置。要在服务器启动时选择字符集和排序规则,请使用 --character-set-server --collation-server

    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    
        2
  •  0
  •   Louisa    8 年前

    通过将“”转换为“”(基于 http://www.i18nqa.com/debug/utf8-debug.html )

    SELECT name FROM products WHERE brand = 'tøj' 而不是 SELECT name FROM products WHERE brand = 'tøj'