我不确定这是什么时候开始的。
我有一个新的代销联盟网站,从批发商那里收到产品目录的导出副本。 我将其格式化并导入Prestashop 1.4.4中。
网站前端包含产品文本内的奇怪字符组合:Ã,Ã,¢,â‚等。 它们出现在常见字符(如,-:等)的位置。
这些字符存在于大约40%的数据库表中,而不仅仅是像ps_product_lang这样的特定于产品的表。
另一个网站线程说当数据库连接字符串使用不正确的字符编码类型时,会出现同样的问题。
在/config/setting.inc中,没有提到字符编码字符串,只有MySQL引擎,它设置为InnoDB,与我在PHPMyAdmin中看到的匹配。
我导出了ps_product_lang,用正确的字符替换了所有这些字符的实例,以UTF-8格式保存了CSV文件,并使用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 binary
- character_set_results utf8
- character_set_server latin1
- character_set_system utf8
因此,也许需要将我的数据库转换为UTF-8(或删除并重新创建)。如果MySQL服务器是latin1,这会带来问题吗?MySQL能够处理提供UTF-8内容但将其存储为latin1的翻译吗?我认为它不能,因为UTF-8是latin1的超集。我的Web托管支持在48小时内没有回复。或许对他们来说这太难了。