某些 Opencart 的模块不支持 UTF8 并显示 ????而不是字符
Some Opencart's modules doesn't support UTF8 and showing ???? instead of characters
在某些情况下,Opencart 模块不支持 RTL 语言和 UTF8 字符,它会显示 ?????????
个字符而不是您的 Persian/Arabic 个字符。
我应该怎么做使用这些模块可以正确显示我的角色吗?
有几种方法:
1) 使用sql查询:
在这种情况下,您可以使用如下查询:
$this->db->query("SET NAMES 'utf8'");
$this->db->query("SET CHARACTER SET utf8;");
$this->db->query("SET character_set_connection=utf8;");
您应该将这些查询放入您的数据库驱动程序文件中。在这里我使用我的 sqli 然后我应该把代码放在 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
,并在另存为 windows 中将 encoding
更改为 UTF-8
(如果该文件正在使用 echo or print
来显示一些字符串...
希望对您有所帮助。
在某些情况下,Opencart 模块不支持 RTL 语言和 UTF8 字符,它会显示 ?????????
个字符而不是您的 Persian/Arabic 个字符。
我应该怎么做使用这些模块可以正确显示我的角色吗?
有几种方法:
1) 使用sql查询:
在这种情况下,您可以使用如下查询:
$this->db->query("SET NAMES 'utf8'");
$this->db->query("SET CHARACTER SET utf8;");
$this->db->query("SET character_set_connection=utf8;");
您应该将这些查询放入您的数据库驱动程序文件中。在这里我使用我的 sqli 然后我应该把代码放在 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
,并在另存为 windows 中将 encoding
更改为 UTF-8
(如果该文件正在使用 echo or print
来显示一些字符串...
希望对您有所帮助。