Windows 重定向文件的编码

Windows 重定向文件的编码,windows,encoding,conemu,cmder,Windows,Encoding,Conemu,Cmder,我正在尝试使用Windows 10上的Cmder/ConEmu工具将python脚本的输出重定向到新文件中。输出将包含非ascii字符,我需要新文件的编码为UTF-8 简化后,我的脚本如下所示: print('Bärlauch') 然后我使用这个命令将其输出重定向到一个新文件 λpython示例_script.py>new_file.txt 如果我检查文件的属性,它的编码是iso-8859-1,拉丁语-1 λ文件-i new_file.txt new_file.txt:text/plain;

我正在尝试使用Windows 10上的Cmder/ConEmu工具将python脚本的输出重定向到新文件中。输出将包含非ascii字符,我需要新文件的编码为UTF-8

简化后,我的脚本如下所示:

print('Bärlauch')
然后我使用这个命令将其输出重定向到一个新文件

λpython示例_script.py>new_file.txt
如果我检查文件的属性,它的编码是iso-8859-1,拉丁语-1

λ文件-i new_file.txt
new_file.txt:text/plain;字符集=iso-8859-1
为了进一步处理和实用性,我需要它是UTF-8。到目前为止,我还没有找到一个解决方案,我已经找了很长时间了。是否无法更改重定向运算符使用的编码

编辑:在运行创建新文件的命令之前,我将代码页设置为UTF-8,但编码仍然是拉丁-1

λchcp 65001

正在检查-python脚本的输出是否明确编码为UTF-8?是的。在打印之前,我使用指定的utf8从ByTestStream解码。但在我将其打印到stdout之后,这难道不是无关紧要的吗?我想你是对的,除非重定向被视为“非字符设备”:“…UTF-8用于控制台设备。非字符设备,如磁盘文件和管道,使用系统区域设置编码(即ANSI代码页)。”我建议你不要使用
打印
,通过
写入
,您可以控制编码。
打印的问题在于:它尝试使用终端编码(如果直接打印)或系统编码(如果通过管道传递)。这两种编码可能不同,因此您可能会遇到问题。[o如果在不支持UTF-8的控制台上打印,则不应使用UTF-8]只需检查-python脚本的输出是否明确编码为UTF-8?是的。在打印之前,我使用指定的utf8从ByTestStream解码。但在我将其打印到stdout之后,这难道不是无关紧要的吗?我想你是对的,除非重定向被视为“非字符设备”:“…UTF-8用于控制台设备。非字符设备,如磁盘文件和管道,使用系统区域设置编码(即ANSI代码页)。”我建议你不要使用
打印
,通过
写入
,您可以控制编码。
打印的问题在于:它尝试使用终端编码(如果直接打印)或系统编码(如果通过管道传递)。这两种编码可能不同,因此您可能会遇到问题。[o如果在不支持UTF-8的控制台上打印,则不应使用UTF-8]