4

不明なプラットフォームで他の人が作成した RTF ファイルで作業していますが、openoffice で開いた文字セットに関係なく、一部の文字を除いてすべてが正しく解釈されます。解釈後の平文は次のとおりです。

「Même taille que la Terre, même masse, même âgec Vénus a souvent été qualifiée de sœur de la Terre.」

元の ANSI 段落は次のとおりです。

"M\u234\'3fme taille que la Terre, m\u234\'3fme masse, m\u234\'3fme \u226\'3fge\uc2 \u61825\'ff\'81\uc1 c V\u233\'3fnus a souvent \u233\'3ft\u233\'3f qualifi\u233\'3fe de s\u339\'3fur de la Terre."

拡大するには:

"âgec Vénus" は "\u226\'3fge\uc2 \u61825\'ff\'81\uc1 c V\u233\'3fnus" になります。

そして最後に、私たちが思いついたこと:

"\uc2\u61825\'ff\'81\uc1c"

ここ\uc2\uc1は、4 バイトと 2 バイトの Unicode エンコーディングを行ったり来たりしています。

\u61825不明な Unicode 文字です。実際、RTF 仕様によれば、2^15 より大きい UTF 文字はすべて否定形式で記述する必要があります。ANSI 文字を使用した否定形は、"-" (マイナス) 記号をメモ帳に表示する必要があります。ここで、最初に rtf ファイルを作成した人が使用した RTF ライターがどのようにそれを実行できたのか、私には理解できないことがあります。仕様、特定のバージョン、文字セットで何かを見逃したのかもしれませんが、わかりません。そのままの場合、61825 は Unicode テーブルのプライベート領域にある F181 に対応します。

次に、\'ff\'81「特定の文字」グループ全体の ANSI 同等フィールド (その構造は通常\uN\'XX) を使用して、4 バイト長のものをコーディングします。そしてここでも、私は見つけることができませんでした:

  • コード ページ (Windows-1252、ISO-8859-1、その他?) は何を参照しています\uN\'XXか?そのため、あまり情報が得られませんでした)XX3F

  • \'FF(エスケープ シーケンス内の制御文字のように見えます!) は何を表し、その理由は何\'81ですか?\u61825F181FF81

最後に、翻訳されたテキスト (フランス語) が私たちに期待させるのは、「:」 (セミコロン) です: 「地球と同じサイズ、同じ質量、同じ年齢: 金星はしばしば地球の姉妹として認定されています」. それは理にかなっています。しかし、セミコロンのこのような複雑なコードを想像できる rtf ライターがいるでしょうか?

もう一度、1 時間の検索の後、私はあなたの仲間に質問を開きます: 誰かがこれを認識し、どの制御ワード エンコーディングが使用されているかを教えてくれますか? ビッグ エンディアン/リトル エンディアン/2 の補数の混乱が 61825 でここにありますか?の代わりに\'ff\'81アセンブルされると同じで、それ自体はそのままでは何も意味しません...ここで私の質問は、奇妙なRTFエンコーディングから完全な元のテキストを見つける方法があるかどうかを知ることだけです!FF81F181

4

1 に答える 1

2

翻訳されたテキスト (フランス語) から期待されるのは、「:」 (セミコロン) です。

Nearly: 省略記号である必要があります。ソーステキストは、ここなどで見ることができます。

省略記号は通常、3 つのピリオドとして単純に記述されますが、自動グリフ置換を行うことができる複雑なテキスト レイアウト アルゴリズムが存在する前に、省略記号の間隔をより適切に制御するために、伝統的に省略記号を表す別の文字がありました。その結果、Unicode 互換文字 U+2026 HORIZONTAL ELLIPSIS が存在し、バイト 133 である Windows コード ページ 1252 などのレガシー エンコーディングへのラウンドトリップが可能になります。

ただし、これは RTF ドキュメントでエンコードされたものではありません。それは簡単すぎるでしょう。

61825 は未知の Unicode 文字です。

これは私的使用領域の文字であり、絶対に何でも表すことができることを意味します. Word は、特定の一般的な記号フォントを PUA 文字としてエクスポートしました -背景については、この投稿を参照してください。

そのため、ある時点で、コード単位 129 (U+F181 の 0x81、61825) が省略記号のようなものにマップされる記号フォントを使用した人がいるかもしれません。そのフォントが何なのか、まったくわかりません!通常の容疑者 (Symbol、Wingdings、Webdings) の 1 つではないようです。ソースについて詳しく調べられない限り、今のところ U+F181 を手動で U+2026 に置き換える必要があるかもしれません。

于 2012-04-14T11:48:43.223 に答える