在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
答案 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
[ ~ ]