我对linux语言环境有很多疑问,特别是不同的编码。 1.在bash中执行以下命令时使用了哪种语言环境?
// Привет - Russian "Hello"
echo "Привет" > ./test.txt
据我所知,它应该使用通过locale
命令获取的语言环境。
经过一些改变语言环境的实验后,我总是通过cat ./test.txt
在我的控制台上得到正确答案。 但为什么呢?为什么我从"ru_RU.iso88595"
,"ru_RU.koi8r"
等更改区域设置时,我总能得到正确的结果?
这是否意味着实际上我的语言环境没有改变?或者文件编码独立于当前的语言环境?
注意:当我按export LC_ALL="ru_RU.iso88595"
设置LC_ALL时,我得到bash: warning: setlocale: LC_ALL: cannot change locale (ru_RU.iso88595)
,但echo $?
给了我0
以及之后locale
返回新的语言环境。这个语言环境真的设置好了吗?
答案 0 :(得分:2)
在bash中执行以下命令时使用了哪种语言环境?
echo "Привет" > ./test.txt
无。数据在引号之间逐字写入。如果文件是UTF-8,它将被写为UTF-8。
为什么当我从" ru_RU.iso88595"," ru_RU.koi8r"等更改语言环境时,我总是得到正确的结果?
cat somefile
只是将文件逐字地转储到您的终端。不涉及cat和/或shell的语言环境。终端以其配置的任何方式显示它(如果您使用screen
,它有自己的输入和输出配置,与shell和终端分开)。
我收到bash:警告:setlocale:LC_ALL:无法更改区域设置(ru_RU.iso88595)
这是来自Bash的消息,说它在将新语言环境应用于当前会话时遇到问题。您可能已设置区域设置,但设置为无效值。确保它出现在locale -a
的输出中,否则它未安装。