0

我是 Ruby 新手,我正在尝试编写一个脚本(Windows XP 上的 Ruby 1.9.3),它将使用 WIN32OLE 库自动从 InDesign 文档中提取文本。

InDesign 文档包含 ShreeLipi 字体(印度梵文脚本)的文本。我的 Ruby 脚本是:

需要'win32ole'

app = WIN32OLE.new('InDesign.Application')
doc = app.activeDocument
text_frame = doc.textFrames(1)
text = text_frame.contents #=> "emhy ‘hmamOm§Mo ñ‘maH$ emhy {‘b‘ܶo C^mam"
puts text.encoding.name #=> "IBM437"
file = File.open('D:/try.txt','w')
file.puts text
file.close

当我打开同一个文件以使用记事本查看文本时,它显示:

"emhy `hmamOmMo ¤`maH$ emhy {`b`šo C^mam"

我不明白为什么会这样。请帮我改正。我尝试使用 Windows-1252 编码和 ISO-8859-1 来解决它,但找不到解决方案。

4

1 回答 1

0

写入文件时,您没有保留字节。而不是这样做:

file = File.open('D:/try.txt','w')

利用:

file = File.open('D:/try.txt','wb')

以二进制形式编写的b方法,用简单的英语来说,意味着不进行行尾转换。

于 2013-01-07T07:07:58.073 回答