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

Ruby Prism解析器编码问题:使用dump_file查看AST时输出乱码

Ruby Prism解析器编码问题:使用dump_file查看AST时输出乱码

嗨,我来帮你理清这个问题~其实你遇到的不是编码错误,而是对Prism的dump_file方法用途理解有点偏差哦!

先还原下你的场景:
你想查看这段Ruby代码(input.rb)的Prism AST:

x = 8 + 55 * 14
# this is a comment ...
puts ">> the value is #{x}"

然后你写了这段代码尝试输出AST:

require "prism"
puts Prism.dump_file('input.rb')

执行后得到了一堆乱码:

$ ruby main.rb
PRISMUTF-8(D�wC�C`
                 RR
--�...0>>�@^@AB
               (

问题原因

Prism的dump_file方法输出的是二进制序列化格式的AST数据,它的设计目的是用于序列化存储或者在进程间传递AST,本来就不是给人类直接阅读的,所以直接用puts输出会显示成乱码。

解决方案

如果想查看人类可读的AST结构,你可以用这两种方法:

  1. 解析文件后调用pretty_inspect输出结构化内容
require "prism"
ast = Prism.parse_file('input.rb')
puts ast.pretty_inspect
  1. 直接使用pretty_print_file方法输出格式化后的AST
require "prism"
Prism.pretty_print_file('input.rb')

这样就能得到清晰、易读的AST内容啦!

备注:内容来源于stack exchange,提问作者OrenIshShalom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 11:19:29