TRichEdit と TLMDRichEdit を使用して編集された、RTF を多用する Delphi 2009 のアプリケーションに取り組んでいます。これらの RTF コントロールに日本語テキストを入力したユーザーは、東方言語サポートがインストールされている Win XP と Vista の両方で、コンテンツをリロードすると日本語テキストが意味不明に表示されるという断続的なレポートを送信しています。
通常、英語と日本語が混在しており、ほとんど問題なく表示されます。次に例を示します。
Inventory turns partnerships. 在庫回転率の
(日本語のテキストが間違って壊れている場合は申し訳ありません - 私はその言語を話したり読んだりしません)。
ただし、非常に頻繁に、テキストの日本語部分だけが意味不明になります。たとえば、次のようになります。
ŒÉñ?“]-¦Œüã‚Ì·•ʉ?-vˆö‚ðŽû‰v‚ÉŒø‰?“I‚ÉŒ‹‚т‚¯‚é’mޝ‚ª‘÷Ý‚·‚é?(マーケットセクター、
見込み客の優 先順位と彼らに販売する知識)
広範なオンライン検索から、問題は RTF の一部として保存されたフォントの結果であると思われます。Windows の日本語版に存在するフォントは、米国英語版と必ずしも同じではありません。RTF ファイル内のフォントをプログラムで置き換えることが可能であり、ほとんど許容できる結果が得られます。
-D‚‚スƒIƒyƒŒ[ƒVƒ・“‚ニƒƒWƒXƒeƒBƒbƒN‚フƒpƒtƒH[ƒ}ƒ“ƒX‚-˜‰v‚ノŒ‹‚ム‚ツ‚ッ‚ネ‚「‚±ニ‚ヘ?A‘‚「‚ノ-ウ‘ハ‚ナ‚ ‚驕B‚サ‚‚ヘAl“セ‚オ‚ス・‘P‚フˆロ‚ƒƒXƒN‚ノ‚ウ‚‚キB
ただし、日本語の文字として正しく認識されない「ジャンク」文字がまだかなりの数あります。生の RTF を見ると、次のように表示されます。
-D\'82\'82\u65405?\'83I\'83y\'83\'8c[\'83V\'83\u12539?\ldblquote\'82\u65414?
明らかに、Unicode 文字は正しく表示されますが、たとえば、\'82\'82 の文字のペアは別のものである必要がありますか? 私の推測では、実際にはある種の 2 バイト文字を表していると思われます。これは、不思議な理由で、1 つの Unicode 文字ではなく 2 つの別個の文字としてエンコードされたものです。
東方言語を含む RTF を取得し、確実に再表示する一般的な (比較的) 確実な方法はありますか?
完全を期すために、RTF フォント テーブルを次のように更新しました。
- フォント名「?l?r ?o?S?V?b?N;」を置き換え 「\'82\'6c\'82\'72 \'82\'6f\'83\'53\'83\'56\'83\'62\'83\'4e;」
- 「\froman\fprq1\fcharset0」を「\fnil\fprq1\fcharset128」に置き換えてフォント名を更新
- 「\froman\fprq1\fcharset238」を「\fnil\fprq1\fcharset128」に置き換えてフォント名を更新
- 「\froman\fprq1」を「\fnil\fprq1\fcharset128」に置き換えてフォント名を更新
- フォント名の置き換え "?? ?????;" 「\'82\'6c\'82\'72 \'82\'6f\'83\'53\'83\'56\'83\'62\'83\'4e;」
更新: フォント名だけを更新しても違いはありません。ロケールが大きな問題のようです。日本語の RTF の表示をほとんどの読者が扱えるものに変換する方法について議論しているサイトをいくつか見たことがありますが、まだ解決策を見つけていません。たとえば、 こことここを参照してください。