虽然关于strtoupper的答案对我很重要,但关于所有字符串函数库的问题更为一般.
我想确保用户选择的语言环境(在多语言站点上)不会破坏我的核心功能,这与国际化无关.
Do PHP string functions work the same in ASCII range independent from locale?
不,我不敢.主要的反例是可怕的土耳其dotted-I:
setlocale(LC_CTYPE,"tr_TR"); echo strtoupper('hi!'); -> 'H\xDD!' ('Hİ!' in ISO-8859-9)
在最坏的情况下,您可能必须提供自己的与语言环境无关的字符串处理.调用setlocale恢复到C或其他一些语言环境是一种修复,但POSIX进程级语言环境模型非常适合现代客户端/服务器应用程序.