从文件中读取和写入

时间:2013-07-29 16:37:44

标签: linux bash locale glibc

我对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返回新的语言环境。这个语言环境真的设置好了吗?

1 个答案:

答案 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的输出中,否则它未安装。