什么是set_locale(LC_CTYPE,'C');实际上呢?

时间:2011-03-08 11:08:34

标签: php utf-8 ctype setlocale

当我的PHP脚本使用UTF-8编码运行时,使用非ascii字符,某些PHP函数(如strtolower())不起作用。我可以使用mb_strtolower,但是此脚本可以在各种不同的平台和配置上运行,并且多字节字符串扩展可能不可用。我可以在使用之前检查函数是否存在,但是我的代码中包含了字符串函数,而不是替换每个实例。

有人建议使用set_locale(LC_CTYPE, 'C'),他说这会导致字符串函数正常工作。这听起来不错,但我不想在不明白它正在做什么的情况下引入这种改变。我之前使用过set_locale来改变数字的格式,但我之前没有使用LC_CTYPE标志,我真的不明白它的用途。值'C'的含义是什么?谢谢!

1 个答案:

答案 0 :(得分:10)

C表示“使用硬编码的任何语言环境”(并且由于大多数* NIX程序都是用C语言编写的,因此称为C)。但是,它通常不是UTF8语言环境。

如果您使用多字节字符集(如UTF8),不能使用常规字符串函数 - 则需要使用mb_对应字符串。但是,几乎每个PHP安装都应该启用此扩展。