2013-04-01 33 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

相关问题