【发布时间】:2014-03-26 06:28:06
【问题描述】:
According to the PHP website 这样做:
encoding 是用于 HTTP 输入的字符编码名称 字符编码转换,HTTP输出字符编码 转换,以及字符串函数的默认字符编码 由 mbstring 模块定义。你应该注意到内部 编码与多字节正则表达式的编码完全不同。
有人可以用更简单的术语解释一下吗?
- HTTP 输入字符编码转换
- HTTP 输出字符编码转换
- 字符串函数的默认字符编码
- “内部编码与多字节正则表达式完全不同”是什么意思?
我的猜测是
- 表示 GET 和 POST 被视为该编码。
- 表示它输出到该编码。
- 表示它对所有多字节字符串函数使用该编码。
- 我不知道。为什么正则表达式与普通字符串函数不同?
如果第2点是正确的,你需要做什么:
ini_set('default_charset', 'UTF-8');
如果我对 3 的理解正确,这是否意味着您这样做:
mb_internal_encoding('UTF-8')
你不需要这样做:
mb_strtolower($str, 'UTF-8');
只是:
mb_strtolower($str);
我确实在另一篇 SO 帖子上读到 mb_strtolower($str) 不应该被信任,并且您需要为每个多字节字符串函数设置编码。这是真的吗?
【问题讨论】:
-
不,这是错误的。 php.net/mb_strtolowerstring mb_strtolower (string $str [, string $encoding = mb_internal_encoding()])