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

Ruby未遵循# encoding编码规范:指定binary却输出UTF-8?

问题原因及解决办法
  • 核心问题是编码注释的位置错误:Ruby规定,文件编码声明(比如# encoding: binary)必须放在脚本的前两行范围内——如果第一行是shebang(#!/usr/bin/env ruby),编码注释必须紧跟其后作为第二行,中间不能有空行。你的脚本里shebang之后空了一行,第三行才写编码声明,Ruby会直接忽略这个注释,导致声明不生效。
  • 当编码声明不生效时,Ruby会使用系统默认的外部编码(多数环境下是UTF-8)来解析脚本中的字符串字面量,所以puts s.encoding输出的是UTF-8。

修正后的脚本

#!/usr/bin/env ruby
# encoding: binary

s = "\xe1\xe7\xe6\x07\x00\x01\x00"
puts s.encoding

运行修正后的脚本,就能得到预期的ASCII-8BIT(binary编码的别名)输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:21:57