0

私はRubyを初めて使用し、WIN32OLEライブラリを使用してInDesignドキュメントからのテキスト抽出を自動化するスクリプト(Ruby 1.9.3、Windows XP)を作成しようとしています。

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 に答える