选择带日文字符的MySQL行

时间:2011-03-19 06:19:46

标签: mysql utf-8 phpmyadmin

有人知道一个可靠的方法(用mySQL或其他方法)来选择包含日文字符的数据库中的行吗?我的数据库中有很多行,其中一些只有字母数字字符,其中一些字符有日文字符。

5 个答案:

答案 0 :(得分:4)

您希望遇到字符集问题时的规则:

  1. 创建数据库时使用utf8编码:

    CREATE DATABASE  _test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    
  2. 确保所有文本文件(varchar和text)都使用UTF-8:

    CREATE TABLE _test.test (
      id INT NOT NULL AUTO_INCREMENT,
      name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE = MyISAM;
    
  3. 进行连接时,请在查询/更新数据库之前执行此操作:

    SET NAMES utf8;
    
  4. 使用phpMyAdmin - 登录时选择UTF-8。

  5. 将网页编码设置为utf-8以确保所有发布/获取数据都是UTF-8(或者您必须转换是痛苦的......)。 PHP代码(php文件中的第一行或至少在任何输出之前):

    header('Content-Type: text/html; charset=UTF-8');
    
  6. 确保所有查询都以UTF8编码编写。如果使用PHP:

    6.1。如果PHP支持UTF-8中的代码 - 只需用UTF-8编写文件即可。 6.2。如果编译php而没有UTF-8支持 - 将你的字符串转换为UTF-8,如下所示:

    $str = mb_convert_encoding($str, 'UTF-8', '<put your file encoding here');
    $query = 'SELECT * FROM test WHERE name = "' . $str . '"';
    

    6.3。

  7. 应该这样做。

答案 1 :(得分:1)

继续提供有用的答案NickSoft之后,我不得不在数据库连接上设置编码以使其正常工作。

&安培;的characterEncoding = UTF8

然后SET NAMES utf8;似乎是多余的

答案 2 :(得分:0)

正如teneff所说,只需使用SELECT

安装MySQL时,请使用UTF-8作为字符集。然后,选择utf8_general_ci作为整理应该可以完成工作。

答案 3 :(得分:0)

日文字符数量有限。您可以使用

搜索这些内容
SELECT ... LIKE '%カ%'

或者你可以试试他们的十六进制面额 -

SELECT ...LIKE CONCAT('%',CHAR(0x30ab),'%')

您可能会发现这个UTF-8日语子集很有用 http://www.utf8-chartable.de/unicode-utf8-table.pl?start=12448

假设您正在为字段,查询,结果使用UTF-8字符集......

答案 4 :(得分:0)

正如Frosty所说,只需使用SELECT。

http://www.unicode.org/roadmaps/bmp/的Unicode图表中查找最低和最高值的日文字符,然后使用REGEXP。它可以使用几个不同的字符区域来获得整个日文字符集。只要您使用UTF-8字符集和utf8_general_ci排序规则,您就应该能够使用REGEXP'[a-gk-nt-z]',其中ag表示图表中的一个Unicode字符范围,kn表示另一个范围,等