14

当我的 PHP 脚本使用 UTF-8 编码并使用非 ASCII 字符运行时,某些 PHP 函数(例如)strtolower()不起作用。

我可以使用 mb_strtolower,但是这个脚本可以在各种不同的平台和配置上运行,并且多字节字符串扩展可能不可用。我可以在使用前检查该函数是否存在,但我的代码中到处都是字符串函数,我不想替换每个实例。

有人建议使用set_locale(LC_CTYPE, 'C'),他说这会导致字符串函数正常工作。这听起来不错,但我不想在不了解它在做什么的情况下介绍这种变化。之前用过set_locale来改变数字的格式,但是之前没用过LC_CTYPEflag,也不是很明白它的作用。价值'C'是什么意思?

4

1 回答 1

12

C意思是“使用硬编码的任何语言环境”(并且由于大多数 *NIX 程序是用 C 编写的,所以它被称为C)。但是,它通常不是 UTF-8 语言环境。

如果您使用多字节字符集(例如 UTF-8),则不能使用常规字符串函数 -mb_需要使用对应的字符集。然而,几乎每个 PHP 安装都应该启用这个扩展。

于 2011-03-08T11:13:37.600 回答