2011-05-12 93 views
0

如何正確處理輸出,因爲我有一個像 這些電子字符,A,U,Y但...當我查詢它顯示了這個角色如何糾正的特殊字符輸出存儲在MySQL

我已經做了我的功課(研究)

我定的meta標籤

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

,並添加的mysql_query( 「集名稱 'UTF8'」);在mysql連接之後。

任何人都可以提出解決方案嗎?請 謝謝

- 編輯 -

我只是創建一個基本的SELECT查詢使用PHP和MySQL

我已經設置了整理到列林「utf8_general_ci」查詢

+0

您需要添加更多的細節。你在哪裏使用什麼來查詢什麼? – 2011-05-12 12:16:42

+0

直接在數據庫中查看時字符是否正確顯示? – 2011-05-12 12:36:22

+0

@wesley是它顯示正確,但是當輸出它顯示這個奇怪的字符 – arnold 2011-05-12 12:44:12

回答

2

檢查您的表格編碼和客戶端編碼。這些都一樣嗎?

+0

嘿,我該如何檢查我的表編碼? – arnold 2011-05-12 12:51:49

+0

我假設你使用phpmyadmin?只需轉到桌面,看看'結構'。然後在字段中查看「整理」。 – 2011-05-12 12:57:12

1

運行後SET NAMES數據出現亂碼後不會有太大的區別。我最近有同樣的問題。我通過以下步驟修復了它:

  1. 將所有內容加載到一個帶有窗體的UTF8頁面中。 (這是一個沒有SET NAMES
  2. 增加SET NAMES到調回所有數據的連接
  3. 並將其保存爲UTF8

當你加載頁面的第一次不SET NAMES應該正確顯示。如果在表單中顯示不正確,那意味着您可能忘記在頁面上設置編碼。

這是假設你所有的表都有適當的排序/編碼。

+0

你知道什麼是正確的編碼/整理嗎? – arnold 2011-05-12 12:28:54

+0

@arnold'utf8_general_ci'應該爲你工作 – JohnP 2011-05-12 12:30:55

+1

另外請注意,不要使用'SET NAMES'。而是使用'mysql_set_charset','mysqli :: set_charset'或PDO的字符集DSN參數(> = 5.3.6)。否則,轉義可能無法100%正確工作... – ircmaxell 2011-05-12 12:45:39

0

嘗試把這個線在你的PHP文件的頂部:

header('Content-Type: text/html; charset=utf-8'); 
1

確定的排序規則正確設置爲數據庫中的所有表的100%?你可以試試像 Phoca Changing Collation這樣的工具來將你的整個數據庫轉換爲utf8_general_ci。

這可能會損壞您當前的數據,因此請務必在運行之前進行適當的備份。