我有从微软访问文件导出的以下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
显示为
费用清单
1.00
<\/OBJECT>
');\n\t\t<\/SCRIPT>\n\t\t
在浏览器中
我用来显示的代码是:
http://www.nomorepasting.com/getpaste.php?pasteid=22618
在我更改编码之前工作正常。
作为一个附带问题,我想知道为什么从制表符分隔更改为分号分隔,并且封闭字段会将导出文件的大小减半。制表符是一个单个字符,就像;字符,并添加引号应该增加大小?
答案 0 :(得分:1)
根据Web服务器的配置,您可能需要使用header()
将编码显式设置为“text / html; charset = UTF-8”:
header('Content-Type: text/html; charset=UTF-8');
这应该足以解决您的特定问题,但是 - 如果您还打算操纵字符串 - 请注意PHP包含许多不能安全使用多字节字符的函数:您至少应该正确配置{ {3}}
我的书签中也有mbstring extension,我认为它仍然相关。