将不同的编码字符集转换为UTF-8

时间:2012-10-24 20:15:43

标签: php mysql

我在客户数据库中有这样的话(并且在相同的情况下更多40个):

  1. Aclimação
  2. Aclima&ccedilão
  3. 我需要将两者都转换为UTF-8并保存在MySQL数据库中:Aclimação。

    我是如何用PHP做的?

    [编辑]
    观察:
    我需要这样做,因为当用户找到特定的“区域”时,它不可能以两种格式转换,例如:

    1. Aclimaç&aatilde;o (correct)
    2. Aclimação (incorrect: utf8 + html number encode)
    3. Aclima&ccedilão (incorrect: iso + html number encode)
    4. 在我的例子中,我只需要一种编码:ISO-8859-1。

3 个答案:

答案 0 :(得分:2)

以下解决方案如何使用以下函数转换数据库中的所有数据:

mb_convert_encoding (data, 'UTF-8', 'HTML-ENTITIES');

当我阅读记录时,请执行以下操作:

utf8_decode (data)

当我根据网站()的选择寻找一些记录时,我会执行以下操作:

utf8_encode (data)

到目前为止,工作得很好。

答案 1 :(得分:1)

在将html_entity_decode()应用于字符串后获取值并将其插入数据库。

(你提供的第二个字符串看起来有一个格式错误的HTML实体,是吗?)

答案 2 :(得分:1)

  1. 使用mysqldump
  2. 将数据库内容转储出去
  3. iconv数据为UTF8
  4. 字符串将格式错误的html实体替换为有效
  5. 使用html_entity_decode将有效的html实体更改为它们应该是的字符。请注意,您应该将其编码(UTF-8)作为参数,否则它将取决于PHP版本!
  6. 将新的UTF-8数据库创建为mysql
  7. 将数据导入mysql
  8. 我不认为例如ã存在于ISO-8859-1中,所以你确实需要UTF-8。将它作为&aatilde;,这是表示它的HTML方式是不正确的。