【发布时间】:2012-03-14 09:28:57
【问题描述】:
我正在编写一个小型网络应用程序,它将接收和解析来自用户的制表符分隔的文本文件。这些文件将通过textarea 或multipart/form-data 表单上传。这些文件将采用各种字符集,包括亚洲等。因此,我试图在整个应用程序中使用 utf-8。
该网站完全(据我所知)采用 UTF-8 编码:
- 每个php文件都以utf-8编码保存;
- 我已将
default_charset = "utf-8"添加到我的php.ini文件中; -
HTML 标头包含所需的 utf-8 提及:
header('Content-Type:text/html; charset=UTF-8'); ... <?xml version="1.0" encoding="utf-8" ?> ... <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> textarea表单包含accept-charset="UTF-8"标记。- db 以 utf-8 进行整理;
- 到数据库的每个连接都包含选项
1002 => 'SET NAMES utf8'。
现在,我刚刚发现我需要手动将 mb_regex_encoding 设置为 utf-8 才能使我的一个解析功能正常工作(我使用 mb_split() 来识别和替换制表符和新行)。所以……
我还需要做些什么来确保我的网站是一劳永逸的 utf-8?特别是,我应该设置任何其他编码函数,例如mb_internal_encoding(),如果是,我应该在代码中的哪个位置设置(例如,在index.php 文件的开头?
【问题讨论】:
-
@Vague - 是的,它既没有提到
mb_regex_encoding也没有提到mb_internal_encoding。 -
@JDelage:PCRE 函数也适用于 UTF-8,仅供参考。并且不要使用
SET NAMES utf8,请看这里:php.net/manual/en/mysqli.set-charset.php -
@hakre - 这是我可以与 PDO 一起使用的东西吗?我的整个数据库交互都是基于 PDO。
-
@JDelage:请看PHP PDO: charset, set names?
标签: php unicode localization