2012-05-31 82 views
2

所以我有一個'utf8_general_ci'表具有相同的字段。MySql/php utf8似乎沒有正確工作

我無法獲得任何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文件使用UTF-8。 默認情況下,它是別的東西,我使用Wamp服務器,它一直在沒有額外的配置,但在這種情況下不工作。

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

['SET NAMES'utf8''](http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html)? – Alexander

+0

mysql_query(「SET NAMES'utf8'」,$ dbConnection); mysql_query(「SET CHARACTER SET'utf8'」,$ dbConnection); – somerandomusername

+1

你知道你可以編輯你的問題,對吧? – Alexander

回答

1

很明顯,在你處理數據的方式中,某些東西不是'Unicode'。

這裏是我的前7秋後算賬:包含代碼

  • PHP文件不是UTF-8本身
  • 數據庫連接必須符合爲Unicode(SET NAMES 'utf-8'
  • 插入的數據必須是utf8編碼如果從非unicode源導入,例如
  • 檢查表使用的列存儲數據
  • 用於顯示數據
  • HTML文件不是UTF(同點1)
  • meta tags聲明必須是UTF-8也
  • HTML字符集...評價沒有點7(也許)

希望這會有所幫助!

+0

嗨。所以我三重檢查了一切。 PHP文件是utf8。 正如你可以在我的頂部帖子中看到的,我有SET NAMES'utf8'。 我只是從文件插入數據,沒有其他來源。 我檢查過所有表格,它們是utf8。 我是從控制檯運行腳本,但不明白爲什麼HTML應該更改db中的任何內容。 – somerandomusername

+0

我知道所有的常見問題,我以前都有過,但現在我不知道。 – somerandomusername

+0

@ user1384210:你可以粘貼html頁面和你用來在插入後顯示的代碼嗎? –