为什么临时 txt 文件是以 ANSI 格式创建的?

为什么临时 txt 文件是以 ANSI 格式创建的?

我有一个很大的日志文件,我需要剪切其中的一部分并将其粘贴到同一个文件的末尾...所以我创建了一个脚本来查找我需要的代码块(sed)创建一个临时文件,粘贴它,然后转到原始文件并删除相同的文本。然后我(cat)两个文件。问题是我的文件都是 utf-8,但临时文件是用 ANSI 创建的(可能是因为它只有“普通”字符),当我合并两个文件时,原始文件会更改为 ANSI,导致一些文本混乱。我更改了我的本地文件,但它们是正确的,

en_GB.ISO-8859-1... up-to-date
  en_GB.UTF-8... up-to-date

并尝试了无数种脚本组合,但结果总是一样。我做了一个简单的测试

echo "test" >/tmp/test.txt 
echo "ção" >/tmp/test2.txt 

然后我就这么做了

file/tmp/test.txt ------>it says ASCII
file /tmp/test2.txt ---->it says UTF-8 Unicode text

当我在 edit-plus 中编辑文件并检查文件编码时,它显示第一个是 ANSI,第二个是 UTF-8。但如果我将它们放在一起,则无论我选择的顺序如何,输出都是正常的(utf-8)...但使用我的大日志文件(已经是 utf-8)并将其与临时文件放在一起,结果始终是 ANSI。

我认为如果没有特殊字符,可能会有某种编码的自动配置,但我不明白为什么当我加入它们时它会变为 ANSI 或 ASCII。我正在使用装有 Ubuntu 14.04 Server 的服务器,并在 Windows 机器上使用 Putty 进行访问。

相关内容