我刚刚创建了一个脚本来将给定文件 (csv) 导入到 opencart。远程服务器以 iso-8859-1 格式传输数据,opencart 默认使用 utf8_bin 集合。
我的问题是,默认的 echo 语句显示所需的输出而没有问题或奇怪的字符的脚本不会将数据提交到数据库而不弄乱特殊的瑞典字符。
示例是这个词:Vå¤rmepump 这绝对不应该是这样的。
你知道什么可能会失败吗?我已经尝试添加 SET NAMES 'utf8' 查询,但没有帮助。
最佳答案
好吧,如果数据是 utf8 编码的,我猜测数据库或数据库连接中可能存在一些问题。这里有一些调试技巧供您引用。
MySQL 数据库和表字符集/排序规则(来自命令行)
mysql -u [youruser] [yourdatabase] -p
mysql> SHOW CREATE DATABASE [yourdatabase];
mysql> SHOW CREATE TABLE [yourtable];
一切都应该是utf8。
MySQL 数据库连接(来自 PHP 脚本)
$result = mysql_query("SHOW VARIABLES LIKE '%character%'");
while ($row = mysql_fetch_assoc($result))
{
error_log(print_r($row, true));
}
这里的所有内容也应该是 utf8。
编辑:您的字符串实际上被编码了两次。运行一个简单的
echo utf8_decode(utf8_decode('Värmepump'))."\n";
在 ANSI 编码的 PHP 文件中输出预期的“Värmepump”。确保您只对数据进行一次编码。
关于php - 将瑞典语字符插入 opencart 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7539655/