你好,我从 MyBB 论坛导入了一批帖子甚至用户名,它们显示为随机字符,如 ’ 和 Â。
根据我在 WordPress 中类似行为的报告所了解到的情况,这可能是 Latin1 与 UTF-8 编码问题?
有没有一种简单的方法可以在事后移除这些字符?
这些字符实际上对应什么?我无法想到它们原本可能是被替换成了哪些原始字符。
另外,我看到一些导入的帖子包含大量未解析的 MyCode,有没有办法在 Discourse 中解析它们?
你好,我从 MyBB 论坛导入了一批帖子甚至用户名,它们显示为随机字符,如 ’ 和 Â。
根据我在 WordPress 中类似行为的报告所了解到的情况,这可能是 Latin1 与 UTF-8 编码问题?
有没有一种简单的方法可以在事后移除这些字符?
这些字符实际上对应什么?我无法想到它们原本可能是被替换成了哪些原始字符。
另外,我看到一些导入的帖子包含大量未解析的 MyCode,有没有办法在 Discourse 中解析它们?
是的,我也这么认为。我正在处理一个具有类似问题的导入。大多数问题都是像弯引号和长破折号之类的字符。
这远非易事,但你可以进行一些后处理,要么使用 force_encoding,要么尝试逐个替换这些字符。
类似这样的代码:
Post.all.each do |post|
post.raw = post.raw.force_encoding('utf-8').encode("Windows-1252").force_encoding('utf-8')
post.save!
post.rebake!
end
但在将其应用于实时数据之前,请务必在测试环境中进行充分测试。
谢谢,Jay。
有没有什么巧妙的方法能从源头上解决这个问题?比如,从旧论坛重新导出数据库,然后在重新导入时清除字符和 MyCode 相关的问题?
如果您尚未上线,重新开始并非可选方案,那么这就是最佳做法。
网站尚未正式启用——从 MyBB 导出数据时,处理字符问题和 MyCode 解析的最佳方法是什么?
如果可能,以 UTF-8 格式导出所有数据将解决这些问题。
我回到了原始的 MyBB 安装,并在管理控制面板/工具与维护/系统健康检查中发现了一个警告:
建议不要在数据库中使用不同的编码。这可能导致意外行为或 MySQL 错误。
表格已列出,我可以看到大部分(但并非全部)表格采用的是 UTF-8 格式。看起来某些表格,尤其是与插件相关的,仍使用较旧的格式。
点击“全部转换”链接后,系统提示需要编辑 /inc/config.php 以支持完整的 4 字节 UTF-8:
$config[‘database’][‘encoding’] = ‘utf8mb4’;
编辑 config.php 并再次尝试转换后,现在所有表格的编码均已匹配。我将尝试重新导入到 Discourse,并反馈这是否有助于解决字符问题。
不过,我仍不确定该如何处理 MyCode 解析问题?
您没有提供任何示例或详细说明。此时,最好开启一个新线程,并将本线程专注于字符编码的后续讨论。
你好,包含示例的新帖子在这里。