我不确定这是什么时候第一次发生的。
我有一个新的直销附属网站,并从批发商那里收到一份出口的产品目录副本。我格式化并将其导入 Prestashop 1.4.4。
网站的前端包含产品文本中奇怪字符的组合:Ã、Ã、¢、â ‚ 等。它们代替常见的字符(如 、- : 等)出现。
这些字符出现在大约 40% 的数据库表中,而不仅仅是像 ps_product_lang 这样的产品特定表。
另一个网站线程说,当数据库连接字符串使用不正确的字符编码类型时,也会出现同样的问题。
在 /config/setting.inc 中,没有提到字符编码字符串,只是 MySQL 引擎,它设置为 InnoDB,与我在 PHPMyAdmin 中看到的匹配。
我导出了 ps_product_lang,用正确的字符替换了这些字符的所有实例,将 CSV 文件保存为 UTF-8 格式,然后使用 PHPMyAdmin 重新导入它们,将 UTF-8 指定为语言。
但是,在 PHPMyAdmin 中进行新的搜索后,我现在在 ps_product_lang 中的这些坏字符的实例数量是我开始时的 10 倍。
如果问题就像在数据库连接字符串中指定正确的语言属性一样简单,我在哪里/如何设置它,以及如何设置?
顺便说一句,我尝试在此线程中提到的 PHPMyAdmin 中运行此命令,但问题仍然存在:
SET NAMES utf8
更新: PHPMyAdmin 说:
MySQL 字符集:UTF-8 Unicode (utf8)
这是我在上一个导入文件中使用的相同字符集,这导致了更多的字符损坏。在导入过程中,UTF-8 被指定为导入文件的字符集。
更新2
这是一个示例:
人们真正生活在无拘无束的环境中——在线购买和租借电影、下载软件、共享和存储文件网络。
更新3
我在 PHPMyAdmin 中运行了一条 SQL 命令来显示字符集:
- character_set_client utf8
- character_set_connection utf8
- character_set_database latin1
- character_set_filesystem 二进制
- character_set_results utf8
- character_set_server latin1
- character_set_system utf8
因此,也许我的数据库需要转换(或删除并重新创建)为 UTF-8。如果 MySQL 服务器是 latin1,这会造成问题吗?
MySQL 可以将服务内容的翻译处理为 UTF8 但将其存储为 latin1 吗?我不认为它可以,因为 UTF8 是 latin1 的超集。我的虚拟主机支持在 48 小时内没有回复。对他们来说可能太难了。