Ubuntu

时间:2015-06-12 13:21:56

标签: ubuntu encoding character-encoding

在Ubuntu上运行一些测试时,我注意到像gedit或终端这样的工具用ascii编码创建文件

$ echo 'hello world' > test.txt
$ file --mime test.txt 
test.txt: text/plain; charset=us-ascii

我的语言环境是utf8,但Ubuntu似乎没有使用

$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=nl_NL.UTF-8
LC_TIME=nl_NL.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=nl_NL.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=nl_NL.UTF-8
LC_NAME=nl_NL.UTF-8
LC_ADDRESS=nl_NL.UTF-8
LC_TELEPHONE=nl_NL.UTF-8
LC_MEASUREMENT=nl_NL.UTF-8
LC_IDENTIFICATION=nl_NL.UTF-8
LC_ALL=

是否应该使用utf8创建这些文件?根据我的设置/区域设置?

我不了解us-ascii字符编码来自。有没有办法告诉Ubuntu / Linux使用utf8?

我确实做过语言环境的事情,例如

sudo locale-gen en_US en_US.UTF-8
dpkg-reconfigure locales

2 个答案:

答案 0 :(得分:3)

纯文本文件在任何地方都没有编码。没有地方存储有关文件编码方式的元数据。创建文件时,它是根据您当前的区域设置创建的。当您使用file测试其类型时,file 根据可用指标猜测。由于文件的内容是纯ASCII,因此它会猜测ASCII。一个只包含ASCII字符的文件在UTF-8和ASCII中是相同的(对于那个问题大多数其他编码,它们都是ASCII兼容的)。

答案 1 :(得分:1)

UTF-8是ASCII的超集。由于您只在文件中放入ASCII字符,因此它既是ASCII又是UTF-8。 file将其报告为ASCII。将非ASCII字符放在那里,否则会报告。

[ quentin ][ quentin@englishbreakfast ] %  echo asd > file
[ ~ ]
[ quentin ][ quentin@englishbreakfast ] %  file file
file: ASCII text
[ ~ ]
[ quentin ][ quentin@englishbreakfast ] %  echo \¨^ø> file
[ ~ ]
[ quentin ][ quentin@englishbreakfast ] %  file file
file: UTF-8 Unicode text
[ ~ ]