我刚刚创建了一个脚本,用于将给定文件(csv)导入opencart。远程服务器以iso-8859-1传输数据,opencart默认使用utf8_bin collaction。
我的问题是,脚本(其中默认的echo语句显示没有问题或奇怪字符的所需输出)不会将数据提交到数据库而不会弄乱特殊的瑞典字符。
我的例子是:Värmepump 这肯定不应该是那样的。
知道究竟会失败的是什么?我已经尝试添加SET NAMES'utf8'查询,但它没有帮助。
答案 0 :(得分:1)
好吧,如果数据是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”。确保只对数据进行一次编码。