Kar*_*lis 7 php string ascii locale internationalization
一些PHP 字符串函数(如strtoupper等)依赖于语言环境.但是,当我确实知道特定字符串仅由ASCII(0-127)字符组成时,仍然不清楚语言环境是否重要.我可以保证strtoupper('abc..xyz')
始终ABC..XYZ
独立于区域设置返回.PHP 字符串函数在ASCII范围内的工作方式与区域设置无关吗?
虽然答案对strtoupper
我很重要,但问题是关于所有字符串函数库的问题.
我想确保用户选择的语言环境(在多语言站点上)不会破坏我的核心功能,这与国际化无关.
PHP字符串函数在ASCII范围内是否与locale无关?
不,我不敢.主要的反例是可怕的土耳其点缀 - I:
setlocale(LC_CTYPE, "tr_TR");
echo strtoupper('hi!');
-> 'H\xDD!' ('H?!' in ISO-8859-9)
Run Code Online (Sandbox Code Playgroud)
在最坏的情况下,您可能必须提供自己的与语言环境无关的字符串处理.调用setlocale
恢复C
或某些其他语言环境是一种修复,但POSIX进程级语言环境模型非常适合现代客户端/服务器应用程序.