2012-07-31 97 views
1

你好,我有我的應用程序中的字符編碼的問題,認爲尋求一些幫助,因爲我沒能解決問題,甚至以爲我是在給一些指導,所以這裏有雲: 我的A型和O字符顯示在瀏覽器爲:MySQL的字符編碼(OA)

我也會把所有我迄今所做的努力來解決這個問題:

1)數據庫:我試圖改變的整理我的表,這裏有一些信息是什麼SHOW TABLE STATUS給出了我的表之一:

名稱=測試組
引擎InnoDB的=版本
= 10
ROW_FORMAT =緊湊
整理= utf8_swedish_ci

數據庫字符變量給出:

| character_set_client = utf8
| character_set_connection = utf8
| character_set_database = latin1(I 奇蹟是這個原因嗎?)
| character_set_filesystem =二進制
| character_set_results = utf8
| character_set_server = utf8
| character_set_system = UTF8

2)在Apache的httpd.conf我有:

AddDefaultCharset UTF-8

3)以我的Zend應用的application.ini:

resources.view.encoding = 「UTF-8」

4)在我的Firefox瀏覽器14.0.1

編輯 - >首選項 - >內容 - >高級>默認字符編碼= 的Unicode(UTF-8)

5 )在我的PHP代碼元標記:

<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> 

現在,這裏也是其他一些有趣的事情:當我看到我的網頁,並從Firefox

01變

查看 - >字符encoding->西(ISO-8859-1)

,這些來自MySQL數據庫的-characters變成確定以OA-字符,但OA-字符來自我的php代碼轉換成Ãt字符。

當我檢查從我的MySQL數據庫裏的數據的編碼與

mb_detect_encoding($ DATA_FROM_MYSQL_DATABASE)另一件事

它輸出UTF-8!那麼最後,如果我做的代碼:

函數utf8_encode($ DATA_FROM_MYSQL_DATABASE)

並輸出結果的問題消失是-characters - > OA-字符。那麼這裏發生了什麼x)所有幫助讚賞

+0

1)嘗試<元字符集=「utf-8」/>在你的html文件中2)你有多少個字符在meta標籤之前?某些瀏覽器期望文檔的前幾千字節內的字符編碼信息。對IE類或fbml標記使用條件註釋可能會使字符編碼信息遠遠落後。 – 2012-07-31 16:42:12

+0

嗨Jan Beck這裏是從我的申請開始的代碼: – jjepsuomi 2012-07-31 16:46:45

+0

<!DOCTYPE html PUBLIC「 - // W3C // DTD XHTML 1.0 Strict // EN」「http://www.w3.org/TR/xhtml1 /DTD/xhtml1-strict.dtd「> jjepsuomi 2012-07-31 16:48:02

回答

2

您是否在您的PHP中發送SET NAMES utf8作爲第一個查詢到MySQL?如果不是這可能是原因。

SET NAMES指示客戶端將用於將SQL 語句發送到服務器的字符集。因此,SET NAMES'cp1251'告訴服務器, 「來自此客戶端的未來傳入消息採用字符集 cp1251」。它還指定服務器應使用 將字符集發送回客戶端的字符集。 (例如,表示 什麼字符集使用的列值,如果你使用SELECT語句 )

SET NAMES utf8 in MySQL?在如何以及爲什麼更多的細節。

+0

嘿,不,我現在還沒有使用SET NAMES。只需連接Zend提供的工具並獲取行並關閉連接即可 – jjepsuomi 2012-07-31 16:51:15

1

疑難解答:

檢查數據庫(與phpMyAdmin,例如)。字符是否正確存儲?還是它看起來很亂?

如果數據庫中的字符正常,那麼檢索時會出現問題。如果他們不正確(我猜他們是),那麼問題是在「存儲」。

  1. 檢查您的源代碼文件並驗證它們是否以UTF-8編碼。
  2. 強制MySQL連接使用UTF8(mysqli的:: set_charset( 'UTF8')或mysql_set_charset( 'UTF8')或PDO:字符集添加到連接字符串(字符集= UTF8))