2011-05-18 218 views
3

問題,簡單而煩人。Php,Mysql和UTF8有問題


我只是試圖打印從我的mysql數據庫收集的名稱列表。

PHP文件保存在utf8中,數據庫和表被設置爲使用utf8。例如,仍然是'ä,ö',輸出爲 。不能相信我仍然有這個問題。

enter image description here

當然,Latin1的解決了這個問題。問題是我必須使用utf8,因爲我正在做一些json_encode來將數據發送到ajax腳本。

enter image description here

任何想法,在地球上有什麼地方出錯了?

在返回數據之前,我應該將數據轉換爲utf8嗎?似乎不可思議我應該有..

+3

發佈的代碼強制他人的圖片重新輸入所有的代碼,如果他們想測試它,幾乎不提供附加價值。 – 2011-05-18 12:06:35

回答

4

轉換utf8_general_ciutf8_unicode_ci ...

嘗試運行SET NAMES UTF8查詢您連接到數據庫後...

function connect($server, $database, $username, $password, $charset = "UTF8"){ 
    $link = mysql_connect($server, $database, $password); 
    if(!$link){ 
     die("Unable to connect to database server."); 
    } 
    mysql_selectdb($database); 
    if(function_exists("mysql_set_charset")){ 
     mysql_set_charset($charset, $link); 
    }else{ 
     mysql_query("SET NAMES $charset"); 
    } 
} 

另外,還要確保你有這個(或通過頭())在你的HTML ...

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

對不起,但這沒有任何區別。 – Xavio 2011-05-18 11:46:46

+1

@Xavio,在phpMyAdmin中運行查詢返回正確的編碼數據?如果是這樣,那麼它必須連接...嘗試運行'mysqli_set_charset($ link,「UTF8」)'...如果它是UTF8,還檢查表格整理... http://pokit.etf.ba/get/ 8ce9605f0dd798a232889822065286da.png ...設置爲UNICODE不通用,然後重試... – 2011-05-18 11:50:56

+0

是的,在PhpMyAdmin中看起來不錯。如果我甚至在從我的函數返回之前我print_r,它看起來堰.... OH。那個litle片段實際上做到了!把它放在我的sqlConnect()函數中。現在工作正常。 Sorta奇怪,我需要它嗎?..因爲我已經把所有東西都設置爲utf8。但是要檢查一下Unicode/General。 – Xavio 2011-05-18 12:02:41

0

兩兩件事要做...

將您的姓名到數組時

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

  • 使用utf_encode()

    1. 確保您的HTML頭髮送正確的字符集。在該行應

      $guests[] = array_map('utf8_encode', $row);

  • +0

    如果我直接添加名稱,比如說,PhpMyAdmin?那是個壞主意? – Xavio 2011-05-18 11:58:01

    +0

    不,這很好......我會重新翻譯我的答案 – JamesHalsall 2011-05-18 11:59:06

    +0

    @Jaitsu,做這個不好主意。 – 2011-05-18 12:06:05