2013-05-01 37 views
0

我有(基於SQLyog的)中,看起來像這樣一個表中的數據:MySQL的Unicode數據

(1)μéÁÂÓ·Óᡧ

但是,當被讀取數據的論壇系統顯示它在屏幕上,它看起來像這樣:

(2)ต้มยำทำแกง

第二輸出是正確的(泰語)。我正在寫一個腳本,將拉動所有這些數據,並將其導入到一個新的數據庫(MongoDB),但當我拉數據和回聲到瀏覽器時,我得到的輸出像第一個(1)以上。

我怎麼去轉換會這樣,當我插入它(或它輸出到瀏覽器),它被保存和顯示正確贊(2)?

我一直沒能輸出的文本類似(2),但我能得到的輸出看起來像(1),包括我的html:

<head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head>

然後當呼應數據做:

echo iconv('latin1', 'utf-8', $string);

我敢肯定,這是很簡單的東西,但我不熟悉不夠使用Unicode等工作了這一點!謝謝帥哥們!

UPDATE

我現在一次更近一步。我叫:

mysql_query("SET NAMES 'utf8'");

,然後能夠輸出(1)用剛:

echo $string;

所以我想MySQL是否已經結束的連接轉換LATIN1到utf8的我,而不是的我必須通過iconv在PHP中執行此操作。

還做不到泰語字符輸出到瀏覽器,但!

回答

0

我設法解決這個問題。

我是從數據庫中獲取文本是在Windows-874(代碼頁泰國)。在我搜索了泰語代碼頁之後,我將其轉換爲轉換爲utf-8的正確路徑。有一次,我切換了頭:

header('Content-type: text/html; charset=windows-874');

我能夠正確地看到泰國的人物,所以我再次關閉頁眉和使用:

iconv('windows-874', 'UTF-8', $string);

此轉換的窗口-874到utf-8,即使沒有標題或元標記,頁面仍然可以正確顯示。

所以...字符集新手一課 - 找出代碼頁的文字可能與編碼,然後嘗試從一個轉換UTF-8 :)

+0

您應該繼續並接受您自己的答案,因爲這是您的解決方案。 – 2013-05-01 22:35:17

+0

會做,所以不讓你2天:( – 2013-05-01 22:55:41

0

你需要確保你的腳本使用的數據庫連接的UTF-8編碼,你需要在你的腳本操縱值確保所有區域與用於多安全操作這樣做字節字符。最後,如果您在瀏覽器中顯示值,則需要輸出utf-8的元標記,正如您似乎已經在做的那樣。

+0

嘿感謝您的答覆:) - 我有你提出的所有要點。數據庫連接通過mysql_query(「SET NAMES'utf8'」)設置爲utf8; - 我也試過mysql_set_charset('utf8');輸出沒有差異。沒有字符串操作發生,它是一個直接查詢,然後回顯。 – 2013-05-01 20:06:34

+0

另外我很困惑的是當前論壇如何正確輸出數據到屏幕上。據我可以從代碼告訴論壇軟件沒有做任何特殊的轉換等。這些表是在latin1 charset和latin1_swedish_ci整理。 – 2013-05-01 20:43:35

+0

@RobEvans單個列可以具有與整個表不同的字符集和排序規則?該列是否使用unicode保存這些數據? – 2013-05-01 22:34:17