我正在用locale en_US从ubuntu服务器迁移python应用程序.UTF-8连接到新的debian服务器,默认情况下C.UTF-8已经设置好.我试图了解是否会有任何影响,但在互联网上找不到好的资源来理解两者之间的区别.

推荐答案

一般来说,C代表计算机,en_US代表美国说英语的人(以及其他想要同样行为的人).

for computer意味着字符串有时更加标准化(但仍使用英语),因此可以从其他程序读取程序的输出.有了en_US,字符串可以改进,字母顺序可以改进(可能是通过芝加哥风格规则的新规则,等等).因此更方便用户,但可能不太稳定.注意:locale不仅用于字符串的翻译,还用于排序(字母顺序、数字(例如千位分隔符)、货币(我认为可以安全地预测美元和2位十进制数字将保留)、月份、星期几等.

在您的情况下,它只是两个地区的UTF-8版本.

总的来说,这不重要.我通常更喜欢我们.UTF-8,但通常这并不重要,在你的情况下(服务器应用程序),它应该只更改日志(log)和错误消息(如果你使用locale.setlocale().你应该在应用程序内处理客户端区域设置.从其他程序读取的程序在打开管道之前应该设置C,所以这并不重要.

如你所见,这可能无关紧要.您还可以使用POSIX语言环境,也可以在Debian中定义.您可以通过locale -a获得已安装地区的列表.

注意:微优化将规定C/C.UTF-8语言环境:不翻译文件(gettext),以及关于排序和数字格式的简单规则,但这应该只在服务器端可见.

Linux相关问答推荐

如何在带模式的文件频繁更改的管道中使用grep-f带模式的文件?

AWK+向AWK导出值未传递

如何使用 Linux 命令行跨子目录查找相似的文件名?

在 Linux 上的 std::threads 中创建子进程

$RANDOM 变量在输出通过管道后似乎没有改变

为什么要命令; ls -l file_doesnot_exists > /dev/null 2>&1 正在工作; ls -l 2>&1 file_doesnot_exists > /dev/null 不是

当接收端未从套接字读取时,通过 Unix 套接字发送的消息会发生什么情况?

如何使用 sed debug调试正则表达式?

如何在初始化脚本中以特定用户身份运行命令?

为什么我不能将 Unix Nohup 与 Bash For 循环一起使用?

BASEDIR 环境变量未正确定义

关于 putenv() 和 setenv() 的问题

用于 GCC/G++ 的宏来区分 Linux 和 Mac OSX?

使用特定目录作为根目录压缩目录的命令

使用 Scp 时防止覆盖文件

/var 中有什么?

基于shell中正则表达式的 colored颜色 突出显示输出

在 Unix 上计算每行/字段的字符出现次数

在 reverse-i-search (Ctrl+R ) , 历史上类似命令之间切换的任何方法

如何在没有 root 用户的情况下在 Linux (CentOS) 中安装软件包并进行自动依赖处理?