提问人:Jason 提问时间:12/31/2022 最后编辑:Jason 更新时间:1/4/2023 访问量:93
使用 Kernel.puts 将 Ruby IO 重定向到文件,如何确保存储文件的编码类型为 ANSI 或 UTF-8
Ruby IO redirection to a file by using Kernel.puts,How can I ensure that the stored file's encoding type is ANSI or UTF-8
问:
在windows: visual studio code IDE中,我写了这样的命令:
ruby -E UTF-8 -e “把'汤姆,欢迎来到我家'”> test.txt
,然后我使用命令:
ruby -E UTF-8 -e “put gets” < test.txt
,但读取时出现错误代码。喜欢:
ķ,欢迎来到我的家。
最后,我发现“test.txt”文件的编码类型是unicode。
如果我坚持使用IO重定向到文件并选择kernel.puts,如何确保存储文件的编码类型为UTF-8?
如何确保重定向后的文件编码类型为 UTF-8?请帮帮我。
答:
0赞
mklement0
1/4/2023
#1
屏幕截图暗示你使用的是旧版 Windows shell cmd.exe
(命令提示符)。[1]
默认情况下,它使用系统的活动旧版 OEM 代码页,该代码页通常是限制为 256 个字符的固定 8 位字符编码,即单字节编码,例如,在运行 时报告的 US-English 系统上的代码页 437。chcp
如果希望cmd.exe
改用 UTF-8 编码,请先运行 chcp 65001
。
有关 PowerShell(新式后继者)的字符编码注意事项,请参阅后面相关问题的答案。cmd.exe
[1] 这由两个事实暗示:屏幕截图中的提示字符串看起来像 C:\path>
并且后面没有空格(不像在 PowerShell 中,它前面也以 PS
开头),并且你成功地将 <
用于输入重定向,在 cmd.exe 和 PowerShell 之间,只有cmd.exe
支持(在 PowerShell 中,它会导致错误)。
评论
1赞
Jason
1/5/2023
是的,你是对的。注册cmd.exe
评论
chcp 65001
cmd.exe