MySql / php utf8似乎无法正常工作

时间:2012-05-31 11:08:29

标签: php mysql utf-8

所以我有一个带有相同字段的'utf8_general_ci'表。

我无法获得任何utf8字符,它们都显示为'????' ,然后我将表更改为'MyISAM',现在我可以从PhpMyAdmin插入utf8数据(第一次发生类似这样的事情)。

但它仍然无法从PHP方面起作用。当我插入'āāā'时它显示为'???',但奇怪的部分是如果我插入'žžžēēē'它显示为'žžž???'所以一些utf8字符有效吗? PHP文件是UTF-8

CREATE TABLE IF NOT EXISTS `company` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=5 ;

$dbConnection = mysql_connect("localhost","*****","*****");
mysql_query("SET NAMES 'utf8'", $dbConnection);
mysql_query("SET CHARACTER SET 'utf8'", $dbConnection);
mysql_select_db('cherrysystem', $dbConnection);
mysql_query("INSERT INTO `company` (`title`) VALUES ('āāčč')",$dbConnection);

分辨

好的,我的问题就是我必须设置MySql ini文件才能使用utf8。 默认情况下它是其他东西,我正在使用Wamp服务器,它总是在没有额外配置的情况下工作,但在这种情况下不是。

 character-set-server=utf8
 collation-server=utf8_general_ci

1 个答案:

答案 0 :(得分:1)

显然,处理数据的方式不是“Unicode”。

以下是我常见的7大嫌疑人:

  • 包含代码的PHP文件不是UTF-8本身
  • 数据库连接必须符合Unicode( SET NAMES'utf8'
  • 如果从非unicode源导入,则插入的数据必须为 utf8 encoded ,例如
  • 检查表用于存储数据的列
  • 用于显示数据的HTML文件不是UTF(与第1点相同)
  • meta tags中声明的HTML字符集必须是utf-8
  • ...没有第7点(可能在评论中)

希望这有帮助!