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

时间:2014-04-28 10:23:08

标签: php mysql encoding utf-8 zend-framework2

我非常绝望。

我是来自德国,我们得到了元音突变(ä,ü,ö等)。我有一个位置数据库,想要对它进行一些查询。因此,一切正常,当我试图找到“慕尼黑”(你可能知道它是慕尼黑)时,它就破了。一般来说,我使用的是ZF2提供的TableGateways,但它们不是问题(请查看下面的列表)。

基本上它总是搞砸元音突变。 我尝试和检查了什么:

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

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

检查了我的file_encoding(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配置,使用utf over latin1作为默认字符集。

现在我没有丝毫的线索,我还能做些什么来解决它。

1 个答案:

答案 0 :(得分:0)

尝试使用utf8_unicode_ci归类而不是utf8_general_ci。 General_ci删除元音和其他特殊字符,并将所有字符翻译为" A"和" 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                                                                                                                                                                                                                                                             
)            

<强> UPDATE2:

我的版本:

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)