2010-03-01 86 views
0

我在重新設計網站,並且存在現有數據庫的問題: 數據庫校對設置爲utf8_unicode_ci,在表格行I'打電話是在整理似乎被設置爲latin1_swedish_ci字符店它是日本(但即使在phpMyAdmin)你看其他字符(我猜latin1_swedish_ci因爲)。無法從數據庫中獲取正確的字符

當我打印從查詢,我收到了一堆的結果???現在用

mysql_query('SET NAMES utf8'); 
mysql_set_charset('utf8',$conn); 

將輸出2009A€N10Å'ŽÂâ€2009年?N10 ??? 2009A€N11Å'ŽÂâ€2009年?N11 ???

任何想法?

回答

0

大家好感謝您的回覆的,這是發生了什麼事,我真的不能更改任何DB因爲有仍然使用了DB和將達到該網站的另一個版本。於是,我找到了解決辦法是如下:

情景: 數據庫設置爲使用UTF8 - >(utf8_general_ci),但場(至少我需要一個人的地方設置爲latin1_swedish_ci

解決方案: 的mysql_connect後,我把以下內容:

mysql_query("SET NAMES 'Shift_JIS'",$conn); 
mysql_set_charset('Shift_JIS',$conn); 

然後在PHP文件:

$titleJP = $row['titleJP']; 
$titleJP = mb_convert_encoding($titleJP, "UTF-8", mb_detect_encoding($titleJP,"Shift_JIS,JIS,SJIS,eucjp-win")); 

現在w ^完美地使用正確的日語顯示字符。 我嘗試了所有其他解決方案,我可以想到沒有運氣(utf-8_decode/encode php functions等..)

1

因爲表被設置爲使用latin1_swedish_ci,它無法正確地存儲已輸入的UTF-8的數據。您需要將該表切換爲使用utf8_unicode_ci處理數據,但任何現有的數據基本上都已損壞。切換分頁後,您必須重新輸入數據才能獲取現有記錄的正確日文字符。

+0

感謝iKnowKungFoo,但事情是,當前的數據庫,因爲它是建立正在使用通過另一個版本的網站,他們將保持執行。所以我不能做到這一點,並重新輸入信息。 – 2010-03-03 15:14:21

0

您需要的字符集更改爲utf8。排序規則不需要更改爲顯示日語字符(但要能夠排序和比較文本,將其更改爲utf8_general_ci可能是個好主意)。

+0

感謝Muleskinner,數據庫字符集設置爲UTF8 - > utf8_general_ci),但現場有LATIN1 ......排序所以這是一個問題。我會在一分鐘後發佈我實施的解決方案。 – 2010-03-03 15:15:56

相關問題