在我的应用程序中,我从 mysql 表中获取内容并将其导出为 csv。该表包含其他语言字符和特殊字符,例如
*♣ Joy ♣, 观弈路人, Qυееп ☺̐ '*̣, معين الاسلام,அரவிந்*
但它不是 CSV 格式,而是显示为
* ë¶€ì‚°ë¹„ì—”ë‚ ë ˆ, Qυееп â˜ºÌ '*Ì£, معين الاسلاÙ*…....
是否可以显示像 DB 中的字符?
由于我对“非英语”字符进行了很多工作,因此正确显示和存储这些字符需要几件事。
没有特别的顺序(因为我不知道什么字符集最适合波斯语,我将使用 UTF-8,如果它不同,你只需使用你需要的那个):
通过从 PHP header('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 字符。然而,还有一件事可以覆盖这一切——网络服务器。Apache(不知道其他服务器)有一个 AddDefaultCharset 指令。在大多数设置中,这被保留为关闭,但我确实遇到了默认字符集设置为 latin1 的设置,因此覆盖了我所有的字符集设置。如果已设置,则在 httpd.conf(或类似的配置文件)中设置。如果您可以访问它,我建议将其设置为关闭。如果您不这样做,那么您可以使用放置在您的 webroot 中的 .htaccess 覆盖全局值,例如:AddDefaultCharset utf-8