【发布时间】:2012-03-11 23:41:53
【问题描述】:
这里有个奇怪的问题:
我必须将数据从 CSV 文件写入 mysql 数据库(默认字符集 UTF-8)
当我读取 CSV 并在终端上打印查询字符串(用于调试目的)时,输出是正确的:
insert into orari (pv_id, day) values(5492, 'giovedì pomeriggio')
但是当我使用 mysql 客户端运行选择查询时,结果很奇怪:
*************************** 273. row ***************************
id: 28856
day: giovedì pomeriggio
pv_id: 5760
如果我在 phpmyadmin 上运行查询也是一样。
HTML 输出正确,字符集设置为 UTF-8,并且 àòù 等字符正确显示。
* 编辑 * 这是我的 mysql 字符集和排序规则设置:
SHOW VARIABLES LIKE 'c%';
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
【问题讨论】:
-
你确定你的 CSV 是 UTF-8 吗?
-
是的,如果我从 CSV 读取结果后打印 mb_detect_encoding($string) 结果是 UTF-8,并且终端中的 echo $string 输出是正确的(终端肯定是 utf8: