什么是set_locale(LC_CTYPE,'C');实际上呢?
问题描述:
当我的PHP脚本以UTF-8
编码运行时,使用非ascii字符,一些PHP函数(如strtolower()
)不起作用。我可以使用mb_strtolower,但是此脚本可以在各种不同的平台和配置上运行,并且多字节字符串扩展可能不可用。我可以在使用前检查函数是否存在,但是我的代码中散布了字符串函数,并且不会替换每个实例。什么是set_locale(LC_CTYPE,'C');实际上呢?
有人建议使用set_locale(LC_CTYPE, 'C')
,他说这会导致字符串函数正常工作。这听起来很好,但我不想在不明白它在做什么的情况下引入这些变化。我以前使用过set_locale来改变数字的格式,但是我之前没有使用过LC_CTYPE
的标志,我真的不明白它的作用。 'C'
的值是什么意思?谢谢!
答
C
的意思是“使用任何区域硬编码”(并且因为大多数* NIX程序是用C编写的,所以它被称为C
)。但是,它通常不是UTF8语言环境。
如果您使用UTF8等多字节字符集,则您的不能使用使用常规字符串函数 - 使用mb_
对应项是必需的。但是,几乎每个PHP安装都应该启用此扩展。
参考:http://php.net/manual/en/function.setlocale.php(它不能解释'C'的作用,并不意味着RTFM,只是为了完整性) – 2011-03-08 11:13:37