1

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

"'S\X2\00E9\X0\jour/Cuisine'"

应该:

"'Séjour/Cuisine'"

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

  • puts ifcFileLine.encode("Windows-1252")
  • puts ifcFileLine.encode("ISO-8859-1")
  • puts ifcFileLine.encode("ISO-8859-5")
  • puts ifcFileLine.encode("iso-8859-1").force_encoding("utf-8")'

但没有什么能给我我需要的东西。

4

1 回答 1

2

我对国际金融公司一无所知,但仅基于 Denis 链接到的页面和您的示例输入,这有效:

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

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

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

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

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

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

于 2017-04-15T20:49:04.600 回答