2013-11-14 70 views
0

我有一個(符號)UTF8問題。這是怎麼回事:UTF8編碼 - 老數據庫和黑鑽石的問題

  • 數據庫是6歲或7歲以上。我正在將網站帶回生活,但我用UTF8編碼運氣不好。編輯編輯:在有另一個刺後,我設法使大多數的字符工作,例如Grüßgott現在的作品。不過,我仍然在單曲和雙引號上得到黑鑽。

  • 我已經做了一堆stackoverflow搜索,並嘗試了很多東西。

  • 我正在使用的本地開發數據庫使用UTF8和utf8_general_ci進行設置。我手動將每個表從latin1_general_ci_as轉換爲utf8_general_ci,並將chartset更改爲UTF8。其中有些人沒有使用查詢工作,所以我手動去了桌子設計,然後似乎修復它。我意識到一些表格COLUMNS可以(並且在我看來)被設置爲latin1_general_ci_as,但我已經做了一個具體的代碼片段的測試用例,而這個(博客)肯定是UTF8。

  • 數據庫連接設置如下:

    $connection = mysql_connect($DB_SERVER, $DB_USER, $DB_PASS); 
    mysql_query("SET character_set_results=utf8", $connection); 
    mb_language('uni'); 
    mb_internal_encoding('UTF-8'); 
    mysql_select_db($DB_NAME, $connection); 
    mysql_query("SET names 'utf8'",$connection); 
    
  • 該網站是程序性的PHP。在functions.php文件中,它從數據庫中選擇數據,如下所示。我表現出這一點的唯一原因是在我的閱讀中,我看到一些人說你需要每次都設置一些東西,但我真的希望你不需要在每次你想從數據庫中獲取某些東西時聲明一些東西。

    query("SELECT * FROM table_name WHERE data='$something[unique]'"); 
    
  • 該網站是HTML5,我有這個在header.php。據我所知,這一切都沒問題。

    <? 
    header('Content-Type: text/html; charset=utf-8'); 
    ?> 
    <!DOCTYPE html> 
    <html> 
    <head> 
        <meta charset="utf-8"> 
    

所以,這是我在哪裏。我真的想要一勞永逸地解決問題,而不必再擔心它。任何幫助或想法,不勝感激。

+0

如果是'latin1_general_ci_as'那麼我會想到他們會需要在數據庫轉換列水平了。 – halfer

+1

爲什麼使用'mysql_ *'和'mysqli_'函數?你不能混合它們!前者也被棄用,將在不久的將來被刪除! – ComFreek

+1

1)你有沒有在這裏的一切:http://stackoverflow.com/questions/279170/utf-8-all-the-way-through? 2)你是否理解這裏的所有內容:[在Web應用程序中處理Unicode前後](http://kunststube.net/frontback/)? 3)數據庫中使用獲取編碼權限的管理工具正確顯示數據(希望)? – deceze

回答

0

你可以嘗試的mysqldump從ISO-8859-1轉換爲UTF-8:

mysqldump --user=username --password=password --default-character-set=latin1 --skip-set-charset dbname > dump.sql 
chgrep latin1 utf8 dump.sql (or when you have. sed -i "" 's/latin1/utf8/g' dump.sql) 
mysql --user=username --password=password --execute="DROP DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;" 
mysql --user=username --password=password --default-character-set=utf8 dbname < dump.sql