在php中将mysql数据(其他语言的数据或具有某些特殊字符的数据)导出为CSV文件

时间:2013-03-23 06:33:17

标签: php mysql csv export

在我的应用中, 我从mysql表中获取内容并将其导出为csv。 该表包含其他语言字符和特殊字符,如

 *♣ Joy ♣, 观弈路人, Qυееп ☺̐ '*̣, معين الاسلام,அரவிந்*

但它不是格式,因为它是CSV格式而是显示为

 * ë¶€ì‚°ë¹„ì—”ë‚ ë ˆ, Qυееп ☺Ì '*Ì£, معين الاسلاÙ*…....

是否可以显示DB中的字符?

1 个答案:

答案 0 :(得分:0)

由于我使用“非英语”字符进行了大量工作,因此正确显示和存储这些字符需要做好几件事。

没有特别的顺序(因为我不知道什么字符集最适合波斯语,我会使用UTF-8,如果它不同,你只需使用你需要的那个):

通过从PHP标头设置正确的标头('Content-type:text / html; charset = utf-8'),告诉您的浏览器您正在使用什么字符集;或者像你这样在你的html中设置元标记:

在数据库中,避免在列/表中混合使用不同的排序规则和字符集。我总是将数据库,表格和列设置为utf8_general_ci,以满足我的需要(英语,德语,塞尔维亚语,匈牙利语等语言)。

正如Jan所说,阅读http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html您很可能需要在连接到数据库后立即执行类似SET NAMES utf8的查询。

所有这些都应该确保正确显示unicode字符。但是,还有一件事可以覆盖所有这些 - Web服务器。 Apache(不了解其他服务器)有一个AddDefaultCharset指令。在大多数设置中,这保留为Off,但我确实遇到了默认字符集设置为latin1的设置,从而覆盖了我的所有字符集设置。如果设置了此项,则会在httpd.conf(或类似的配置文件)中设置。如果您有权访问它,我建议将其设置为关闭。如果不这样做,则可以使用webroot中的.htaccess覆盖全局值,例如:AddDefaultCharset utf-8