setlocale(LC_CTYPE,“de_DE.UTF8”)或setlocale(LC_CTYPE,“de_DE.UTF-8”)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了setlocale(LC_CTYPE,“de_DE.UTF8”)或setlocale(LC_CTYPE,“de_DE.UTF-8”)?相关的知识,希望对你有一定的参考价值。
setlocale(LC_CTYPE, "de_DE.UTF8")
要么
setlocale(LC_CTYPE, "de_DE.UTF-8")
有没有破折号?我在答案中都看到过。
我运行locale -a
并使用它输出的字符串。在OS X 10.9上,我得到了de_DE.UTF-8
。在Debian 6上,我得到了de_DE.utf8
。另一方面,dpkg-reconfigure locales
使用de_DE.UTF-8
。最安全的方法可能是检查setlocale
的返回值,如果失败则尝试不同的变体。
也就是说,所有版本通常都应该工作:有或没有破折号,大写或小写。
编码名称为UTF-8。
但在这种情况下,两个参数都是正确的,他们正在为您做同样的工作
这是一个以编程方式解决它的实用解决方案。当setlocale
失败时,它返回false。
if (!setlocale(LC_ALL, str_replace('utf-8', 'utf8', $locale))
&& !setlocale(LC_ALL, str_replace('utf8', 'utf-8', $locale))) {
/* fail gracefully */
}
/* your locale has been set up properly
在我的情况下,一个可以在我们的Mac上工作,另一个可以在Linux CI盒子上工作,所以这个解决方案使测试都传递给它们。
顺便说一句,小心LC_ALL。为您需要的最弱范围设置区域设置。
您实际上可以将值数组传递给setLocale()
。我在OSX上开发并在Linux上运行的主机上进行测试时遇到了这个问题。所以现在我这样做:setLocale(LC_ALL, ["de.utf", "de_DE.utf", "de_DE.UTF-8", "de", "de_DE"])
匹配的第一个是go。文件:https://secure.php.net/setlocale
以上是关于setlocale(LC_CTYPE,“de_DE.UTF8”)或setlocale(LC_CTYPE,“de_DE.UTF-8”)?的主要内容,如果未能解决你的问题,请参考以下文章
登陆报错:-bash: warning: setlocale: LC_CTYPE: cannot c
text Centos警告:setlocale:LC_CTYPE:无法更改区域设置(UTF-8):没有此类文件或目录
警告:setlocale: LC_CTYPE: 无法改变区域选项 (UTF-8)
当我 ssh 连接到 vagrant centos 6 时,我收到警告 setlocale LC_CTYPE
MSVCRT.DLL Console I/O Bug(setlocale(LC_CTYPE, "Chinese_China.936"))
终端SSH远程连接CentOS报错:-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or