2013-04-01 65 views
0

我目前正在使用MySQL數據庫,而維護數據庫的前一個人已將字符集從ISO-8859-1更改爲UTF-8。現在有一個問題,每個ä變成ä。現在我編寫了代碼來更改整個數據庫中的所有記錄。但顯然有一些詞語被正確書寫。 因此,例如,你有一個像Pöytäkrono這樣的詞和Sisäänkirjautuminen這樣的詞。 如果我使用iconv('UTF-8', 'ISO-8859-1', Pöytäkrono)它會給Pöytäkrono, ,但是當我使用iconv('UTF-8', 'ISO-8859-1', Sisäänkirjautuminen)它會給S。 由於數據庫相當大,我想自動完成,但我不希望那些拼寫/寫入的單詞只能更改爲錯誤的單詞。如何在不更改正確的情況下使用php更改mysql數據庫的字符集?

+0

MySQL只是其中一個角色。查看[UTF-8所有方式](http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) –

+0

因此,您的數據庫中有一些*數據up編碼,你有*一些*數據是正確的?或者[在Web應用程序中處理Unicode Front To Back](http://kunststube.net/frontback/)有幫助嗎? – deceze

回答

0

您可以像更改數據庫存儲編碼一樣工作,數據庫以UTF-8存儲字符串。這本身並不會爲你購買任何東西。

不過的事情,也需要改變:

  • 文本編輯編碼需要設置爲UTF-8。直接在源代碼中使用PHP字符串的文本編輯器已經設置了編碼。

  • 數據庫< - > php 傳輸編碼,它可能不存在於您的代碼中,因爲它默認爲ISO-8859-1。對於UTF-8,您在查詢之前需要明確呼叫mysql_set_charset("utf8")

  • 網站編碼聲明,默認爲ISO-8859-1。您需要明確呼叫header("Content-Type: text/html; charset=UTF-8")或配置例如apache自動執行。
+0

但UTF-8存在無法存儲或顯示ä或ö的問題,我用一個正則表達式解決了這個問題:$ regex =「(([ÄàÄ°-zA-Z0-9] * + \ s *) +)「;這會照顧正確顯示的值,但仍然可以更改錯誤的值。 – user1806834

相關問題