【问题标题】:Loop through MySQL database changing apostrophes with UTF-8 version循环使用 UTF-8 版本的 MySQL 数据库更改撇号
【发布时间】:2015-10-10 06:56:47
【问题描述】:

我的网站 + 数据库遇到了一些问题,内容是使用 java 应用程序使用一些未知字符集添加到数据库中的,并且它们正在使用 UTF-8 <meta charset='UTF-8'> 以 PHP/HTML 显示,但我得到了一堆菱形问号。

我尝试过更改字符集并使用 htmlentities 函数,但运气不佳。我想知道是否可以遍历数据库表,删除某些字符(旧撇号)的所有实例并将其替换为 utf-8(撇号)版本?

我还将数据库字符集设置为 utf-8。这只是我遇到问题的旧内容。

旧撇号:'

所需的撇号:'

【问题讨论】:

  • 那些不是逗号,那些是撇号。逗号是,
  • @ElefantPhace 正如你所看到的,这些东西也让我失去了理智:p

标签: php mysql encoding utf-8 character-encoding


【解决方案1】:

您需要为每个表编写一个查询,如下所示:

UPDATE table1
SET field1 = replace(field1, "’", "'"),
field2 = replace(field2, "’", "'")
etc.

【讨论】:

  • 听起来不错。我无法对其进行测试,因此您可能需要以不同于我在上面发布的方式转义单引号。例如,如果双引号不起作用,则可能是 replace(field1, ''', '''') 或 replace(field1, ''', '\'')。
【解决方案2】:

旧内容是使用非 UTF8 字符集添加到数据库中的,这就是它显示为 � 的原因。不幸的是,不可能进行彻底的修复,因为所有符号都不能很好地转译为 UTF8。您可能只想简单地更新您找到的那些,例如撇号 。您还可以找到有用的信息here

编辑:我提到的更新类似于 Ben 的查询

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多