我有一个由windows系统生成的CSV文件。然后将该文件移动到linux。linux环境是NAME="Red Hat Enterprise Linux Server".VERSION="7.3 (Maipo)".ID="rhel“。
当我使用vi编辑器时,所有的字符都是可见的。例如,给出了一行:"Sarah--bitte nicht löschen“。
但是当我猫文件时,我得到类似于"Sarah--bitte nicht l▒schen“之类的东西。
此文件由数据存储应用程序使用,并且此unicode字符为"?“在数据存储中。由
我找到了本网站;它有压缩文件(主页上的链接)和所有的艺术品。其中一些具有.ans扩展,它们看起来像在Linux/Unix上使用的ANSI转义代码,但是当我在XFce终端中使用cat打开其中一个扩展时,它会产生垃圾(但在颜色上)。他们看起来不像图片库。
链接中的主要艺术品的第一行如下(从Emacs复制):
[0;1m[30mthere is no substitute [0;33mÜܲ[1;43m°±²²[40mÛ[43mÛ²±[0;33mÝ ßÜ[1;43m²²²[40mÛÛ²[40m[K
文件类型为DOS,但它们可以只在Windows上创建。
在搜索ANSI艺术时,我还发现本网站的压缩文件
我打开我的Windows,输入18,并将文件保存为utf-8编码。我知道我的文件将有一个BOM头,而我的文件是一个utf-8编码的文件(带有BOM头)。
问题是,当通过下面的代码打印该字符串时:
//str is that string read from the file using StandardCharsets.UTF_8 encoding
System.out.println(str);
在窗户里:
?18
但是在linux中我得到了:
18
那么为什么java的行为是不同的呢?如何理解它?
with open(sourceFileName, 'rt') as sourceFile:
sourceFileConents = sourceFile.read()
sourceFileConentsLength = len(sourceFileConents)
i = 0
while i < sourceFileConentsLength:
print(str(i) + ' ' + sourceFileConents[i])
i += 1
请原谅unPythonic for i循环,这