2013-10-14 43 views
1

我有用utf8_general_ci编码的所有表和数据库,并且数据库中的所有数据都正常。 当我选择在CLI和PHP(PDO)数据和打印(当我将这些数据保存到数据库)的文本包含问号:使用php编码MySQL数据库

Raw, zagra? te? rol? wiceprezydenta 

为什么?怎么了 ? 我试过SET NAMES解决方案,但不工作。我的代码 部分:

<?php 
setlocale(LC_ALL, 'pl_PL'); 
ini_set('default_charset','utf-8'); 
mb_internal_encoding("UTF-8"); 
putenv('LANG=pl_PL.UTF-8'); 
$db = new PDO('mysql:host=localhost;dbname=nameofdb;charset=utf-8','root','******', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 
// body... 
+0

贵* CLI *解释UTF-8正确...? – deceze

+0

是的。问题是,即使我从浏览器运行脚本(当然,将标题字符集设置为utf8) – mitch

+0

您是否在[UTF-8中一直贯穿]考虑了* everything *(http://stackoverflow.com/questions/279170/) UTF-8,所有联程通)? – deceze

回答

0

字符集$db连接字符串中应该是不utf8utf-8这样的:

$db = new PDO('mysql:host=localhost;dbname=nameofdb;charset=utf8','root','****', 
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 
+0

谢谢,但不起作用,没有任何改变。 – mitch