我有以下从 microsoft access 文件导出的 UTF-8 文件
http://www.yousendit.com/download/TTZtT214SU84Q1FLSkE9PQ
我已确保我的 mysql 数据库为 utf8,状态为;客户端和服务器的命令。我使用以下命令将上述文件插入到我的数据库中:
LOAD DATA LOCAL INFILE 'tblAuction1.txt' INTO TABLE Auctions FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\';
一切似乎都进展顺利,unicode 字符显示在 html 中,据我所知,它们应该如此。数据库字段的直接内容在这里:
http://www.nomorepasting.com/getpaste.php?pasteid=22622
但是显示生成的 html 代码:
http://www.nomorepasting.com/getpaste.php?pasteid=22617
显示为
费用 list
1.00
<\/OBJECT>
');\n\t\t<\/SCRIPT>\n\t\t
在浏览器中
我用来展示这一点的代码是:
http://www.nomorepasting.com/getpaste.php?pasteid=22618
在我更改编码之前,它工作正常。
作为一个附带问题,我想知道为什么从制表符分隔更改为分号分隔,并且包含字段会使导出文件的大小减少一半。制表符是单个字符,就像 ; 一样。字符,并添加引号括起来应该会增加大小?
最佳答案
根据 Web 服务器的配置,您可能需要使用 header()
将编码显式设置为“text/html; charset=UTF-8”:
header('Content-Type: text/html; charset=UTF-8');
这对于您的特定问题来说应该足够了,但是 - 如果您还打算操作字符串 - 请注意 PHP 包含许多与多字节字符一起使用不安全的函数:您至少应该正确配置 mbstring extension .
我的书签中也有这个 cheatsheet,我认为它仍然相关。
关于php - MySQL 和 PHP unicode 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/355897/