如何使用 Ruby 解码 IFC

How to decoding IFC using Ruby

在 Ruby 中,我正在读取 .ifc 文件以获取一些信息,但我无法对其进行解码。例如文件内容:

"'S\X2[=11=]E9\X0\jour/Cuisine'"

应该是:

"'Séjour/Cuisine'"

我正在尝试使用以下代码对其进行编码:

但没有什么能满足我的需求。

我对 IFC 一无所知,但仅基于 Denis 链接到的页面和您输入的示例,这是有效的:

ESCAPE_SEQUENCE_EXPR = /\X2\(.*?)\X0\/

def decode_ifc(str)
  str.gsub(ESCAPE_SEQUENCE_EXPR) do
    .gsub(/..../) { $&.to_i(16).chr(Encoding::UTF_8) }    
  end
end

str = 'S\X2[=10=]E9\X0\jour/Cuisine'
puts "Input:", str
puts "Output:", decode_ifc(str)

这段代码所做的就是用相应的 Unicode 字符替换分隔符之间的每个四个字符序列 (/..../),每个字符都是十六进制的 Unicode 代码点。

请注意,此代码仅处理此特定编码。快速浏览 implementation guide 会显示其他编码,包括用于基本多语言平面之外的 Unicode 字符的 \X4 指令。不过,这应该可以帮助您入门。

在 eval.in 上查看:https://eval.in/776980