0

我有很多关于 linux 语言环境的问题,尤其是不同的编码。1. 当我在 bash 中执行以下命令时,使用哪种语言环境?

// Привет - Russian "Hello"
echo "Привет" > ./test.txt 

据我了解,它应该使用通过locale命令获取的语言环境。

经过一些更改语言环境的实验后,我总是在控制台上得到正确的答案cat ./test.txt但为什么?为什么当我从"ru_RU.iso88595","ru_RU.koi8r"等更改语言环境时,我总是得到正确的结果?

这是否意味着实际上我的语言环境没有改变?或者文件编码独立于当前语言环境?

注意:当我设置 LC_ALL 时,export LC_ALL="ru_RU.iso88595"我得到bash: warning: setlocale: LC_ALL: cannot change locale (ru_RU.iso88595),但echo $?给了我0,然后locale返回新的语言环境。这个语言环境真的设置了吗?

4

1 回答 1

2

当我在 bash 中执行以下命令时使用哪个语言环境?

echo "Привет" > ./test.txt

没有任何。数据是逐字写入的,因为它出现在引号之间。如果文件是 UTF-8,它将被写为 UTF-8。

为什么当我从“ru_RU.iso88595”、“ru_RU.koi8r”等更改语言环境时,我总是得到正确的结果?

cat somefile只是将文件逐字转储到您的终端。不涉及 cat 和/或您的 shell 的语言环境。终端以任何配置方式显示它(如果您使用screen,它有自己的输入和输出配置,与外壳和终端分开)。

我得到 bash: 警告: setlocale: LC_ALL: cannot change locale (ru_RU.iso88595)

这是来自 Bash 的消息,表示将新语言环境应用于当前会话时遇到问题。您可能已设置区域设置,但设置为无效值。确保它出现在 的输出中locale -a,否则不会安装。

于 2013-07-29T20:55:37.637 回答