【问题标题】:How can i change the character set of mysql database with php without changing the correct ones?如何在不更改正确字符集的情况下使用 php 更改 mysql 数据库的字符集?
【发布时间】:2013-03-22 08:22:35
【问题描述】:

我目前正在使用 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 utf-8 iconv iso-8859-1


【解决方案1】:

您可以像这样更改数据库存储编码,它将在数据库存储 UTF-8 字符串中起作用。这本身不会给你带来任何东西。

但也需要改变的事情:

  • 文本编辑器编码需要设置为 UTF-8。直接在源代码中的 PHP 字符串具有您的文本编辑器设置的编码。

  • 数据库php transport 编码,它可能甚至不存在于您的代码中,因为它默认为 ISO-8859-1。对于 UTF-8,您需要在进行查询之前显式调用 mysql_set_charset("utf8")

  • 网站编码声明,也默认为 ISO-8859-1。您需要显式调用 header("Content-Type: text/html; charset=UTF-8") 或配置例如 apache 以自动执行此操作。

【讨论】:

  • 但 UTF-8 存在无法存储或显示 ä 或 ö 的问题,我用正则表达式解决了它:$regex = "(([äöÄÖa-zA-Z0-9 ]*+\s*)+)";这会处理正确显示的值,但仍然可以更改错误的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 2012-07-27
相关资源
最近更新 更多