【问题标题】:Replacing charachers in a mysql database替换mysql数据库中的字符
【发布时间】:2009-12-15 10:58:13
【问题描述】:

我已将一个大型 phpbb3 数据库从 latin1 数据库转移到 utf-8 一切顺利,现在我需要更改数据库中的“奇怪”字符。昨天找到了一个可行的方法,现在找不到了,我试了一下:

update phpbb_topics set topic_title = replace(topic_title, 'Ã', 'à');
update phpbb_topics set topic_title = replace(topic_title, 'è', 'è');

基本上我需要将表格字段中的所有Ã字符更改为à等等。

你怎么能做到这一点?

谢谢

【问题讨论】:

  • 数据库中有奇怪字符的事实表明转换不顺利。事实上,它出了问题。
  • 通过 Google 快速搜索,您的查询似乎是正确的。字段没有更新还是有其他问题?您是否尝试过做一些相当安全的事情,例如用“x”更改所有“x”实例?您可以看到工作但很容易逆转的东西?
  • @rikh 是的,这是非常非常错误的,但我无能为力,这就是房东给我的 :-( @Anthony 你说得对,我尝试了另一张桌子,然后确实有效,看起来与表的 BLOB 类型有关。

标签: mysql utf-8 phpbb3


【解决方案1】:

更新 phpbb_topics 设置 topic_title = replace(replace(topic_title, 'è', 'è'), 'Ã', 'à');

你应该回答自己以下问题:

  • 什么二进制数据存储在数据库中(使用 ascii() 函数或 SELECT ... INTO DUMPFILE)
  • 什么二进制数据被发送到客户端(它并不总是与存储相同)
  • 您的客户端如何显示接收到的二进制数据? (尝试不同的客户和不同的选项)

【讨论】:

    【解决方案2】:

    我会将它转储到 .sql 文件中,然后用 sed 或文本编辑器替换字符(如果文件不是很大)。之后,您再次运行脚本。 也许有一种方法可以直接在数据库中执行此操作,但我不知道。

    我的解决方案的问题在于它不是原子的。在转储和重新插入之间对数据库的更改将丢失。

    问候 拉斐尔

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 2014-07-10
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多