MySQL无法与PHP的元音突变进行交互



我对这个非常绝望。

问题是我来自德国,我们有元音突变(ä,ü,ö等)。我有一个位置数据库,想对它进行一些查询。因此,一切都很好,当我试图找到"München"(你可能知道它是慕尼黑)时,它坏了。一般来说,我使用ZF2提供的TableGateways,但它们不是问题所在(查看下面的列表)。

基本上,它总是在元音突变上出错。我尝试和检查的内容:

PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8"(无作用)

双重检查数据库排序规则(utf8 general_ci)

检查了我的文件编码(utf8)

iconvutf8_de/encode(无作用)

记录飞行的查询

 140428 11:59:49      394 Query SET PROFILING=1
  394 Query SHOW STATUS
  394 Query SHOW STATUS
  394 Query SELECT `location`.* FROM `location` WHERE `city` LIKE 'münc%'
  394 Query SHOW STATUS

正在navicat和终端(已工作)上尝试查询

写得又快又脏mysql_connect(); mysql_query()-测试也失败。

编辑了mysql-config,使用utf-overlatin1作为默认字符集。

现在我根本不知道还能做些什么来修复它。

尝试使用utf8_unicode_ci排序规则而不是utf8_general_ci。General_ci删除元音和其他特殊字符,并将它们全部翻译为"A"one_answers"U",例如:

ÀÁÅåāă = A
ü = U

utf8_unicode_ci速度较慢,但可以按预期使用这些字符。

更新:

sql:

CREATE TABLE `location` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `city` varchar(120) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `location` VALUES (1,'München');

脚本:

$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', 'xxxxx',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$q = $dbh->prepare("SELECT * FROM `location` WHERE `city` LIKE 'münc%'");
$q->execute();
print_r($q->fetch());

执行:

$ php catalog_mdmtointra.php                                                                                                                                                                                                            
Array                                                                                                                                                                                                                                                                          
(                                                                                                                                                                                                                                                                              
    [id] => 1                                                                                                                                                                                                                                                                  
    [0] => 1                                                                                                                                                                                                                                                                   
    [city] => München                                                                                                                                                                                                                                                          
    [1] => München                                                                                                                                                                                                                                                             
)            

更新2:

我的版本:

ii  percona-server-common-5.5            5.5.33-rel31.1-566.wheezy          i386         Percona Server database common files (e.g. /etc/mysql/my.cnf)
ii  php5-mysqlnd                         5.4.4-14+deb7u2                    i386         MySQL module for php5 (Native Driver)

最新更新