You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Ruby重定向输出为UTF-8编码文件的问题求助

解决方案:Windows下Ruby重定向输出为UTF-8编码文件

问题根源

Windows控制台的默认重定向编码并非UTF-8(通常是系统ANSI编码或UTF-16),即使Ruby通过-E UTF-8指定编码,系统层面的重定向仍会将输出转码为Unicode(UTF-16),导致读取时乱码。

可行方案

方案1:切换控制台编码为UTF-8

Windows控制台通过代码页控制编码,切换到UTF-8代码页(65001)后,重定向的输出会直接采用UTF-8编码:

  1. 先执行编码切换命令:
    chcp 65001
    
  2. 执行写入命令:
    ruby -E UTF-8 -e "puts '汤姆,Welcome to my home'" > test.txt
    
  3. 读取时同样先切换编码:
    chcp 65001
    ruby -E UTF-8 -e "puts gets" < test.txt
    

方案2:Ruby代码内强制指定流编码

绕过系统控制台编码限制,直接在Ruby代码中强制设置标准输出/输入的编码,确保输出为UTF-8:

  1. 写入命令(强制STDOUT编码为UTF-8):
    ruby -e "STDOUT.set_encoding('UTF-8'); puts '汤姆,Welcome to my home'" > test.txt
    
    若需明确指定外部编码转换,可写成:
    ruby -e "STDOUT.set_encoding('UTF-8', 'UTF-8'); puts '汤姆,Welcome to my home'" > test.txt
    
  2. 读取命令(强制STDIN编码为UTF-8):
    ruby -e "STDIN.set_encoding('UTF-8'); puts gets" < test.txt
    

补充说明

  • 方案1需要每次执行Ruby命令前切换编码,适合临时操作;
  • 方案2直接在Ruby层面控制编码,不依赖控制台设置,更稳定可靠。

内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:00:59