在某些情况下,Opencart的模块不支持RTL语言和UTF8字符,它将显示?????????
个字符而不是您的波斯语/阿拉伯字符。
我应该如何处理这些模块以显示我的角色正确吗?
答案 0 :(得分:1)
有几种方法:
1)使用sql查询:
在这种情况下,您可以使用一些查询,例如:
$this->db->query("SET NAMES 'utf8'");
$this->db->query("SET CHARACTER SET utf8;");
$this->db->query("SET character_set_connection=utf8;");
您应该将这些查询放在数据库驱动程序文件中。我在这里使用mysqli然后我应该将mysqli.php
中的代码放在这个目录opencart\system\library\db\mysqli.php
中,如下所示:
public function __construct($hostname, $username, $password, $database, $port = '3306') {
$this->link = new \mysqli($hostname, $username, $password, $database, $port);
if ($this->link->connect_error) {
trigger_error('Error: Could not make a database link (' . $this->link->connect_errno . ') ' . $this->link->connect_error);
exit();
}
$this->link->query("SET NAMES 'utf8'");
$this->link->query("SET CHARACTER SET utf8");
$this->link->query("SET character_set_connection=utf8;");
$this->link->query("SET SQL_MODE = ''");
}
2)更改数据库字符集:
但有些情况下它不会解决你的问题。然后你应该检查你的数据库Collation
表中的所有表和列,你应该将它设置为utf8_general_ci
。
为此,您可以使用ALTER TABLE YOUR_TABLE_NAME DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
更改表的字符集,并使用ALTER TABLE YOUR_TABLE_NAME CHANGE COLUMN_NAME CHARACTER SET utf8 COLLATE utf8_general_ci;
更改列字符集。
请注意,如果有很多表和列,您可以将文件导出为.sql
格式,然后用记事本打开并替换所有latin1
(这是我的文件字符集,也许是在您的文件中有所不同),utf8
并保存并使用这个新的数据库文件。
3)更改文件格式:
在这种情况下,您应该使用记事本打开文件并使用file menu / save as
,并在另存为窗口时将encoding
更改为UTF-8
(如果文件正在使用{{ 1}}显示一些字符串......
希望它有所帮助。