-1

TTNTRichEdit RTF コンテンツを Unicode (utf8/utf16) 形式で取得/設定するにはどうすればよいですか? TStringStreams による TRichEdit.loadFromStream/saveToStream メソッドを使用して、RTF コンテンツを取得および設定します。ただし、非標準の ASCII 文字には、ロケールに依存する ANSI コードのみを使用します。(4x : \`f5) しかし、ユーザーが自分のプロジェクトを別のロケールの別のコンピューターに持ち込むと、私は困ります。国民性が失われます。EM_STREAMIN/EM_SREAMOUT メッセージの SF_UNICODE フラグは、SF_RTF ではなく SF_TEXT と組み合わせることができます。

4

2 に答える 2

1

問題ありません。Unicode 準拠のコンポーネントを使用しています。データが失われることはありません。RTFに関するウィキペディアの記事から:

標準の RTF ファイルは、7 ビットの ASCII 文字のみで構成できますが、エスケープ シーケンスによって ASCII を超える文字をエンコードできます。文字エスケープには、コード ページ エスケープと、RTF 1.5 以降の Unicode エスケープの 2 種類があります。コード ページ エスケープでは、バックスラッシュとタイプライター アポストロフィに続く 2 つの 16 進数が、Windows コード ページから取得された文字を示すために使用されます。たとえば、コード ページが Windows-1256 に設定されている場合、シーケンス\'c8はアラビア文字 bā' (ب) をエンコードします。

Unicode エスケープの場合、制御語 \u が使用され、その後に Unicode UTF-16 コード単位番号を示す 16 ビットの符号付き 10 進整数が続きます。Unicode がサポートされていないプログラムのために、指定されたコード ページでのこの文字の最も近い表現がこの後に続く必要があります。たとえば、\u1576? Unicode をサポートしていない古いプログラムでは、代わりに疑問符としてレンダリングする必要があることを指定して、アラビア文字の bāī を与えます。

コード ページ エスケープが発生しています。しかし、それは結構です。そういうこと\`f5です。この文字はドキュメントのコード ページにあるため、コード ページ エスケープを使用できます。ドキュメントのコード ページ外の文字を含めると、コントロールは Unicode エスケープを使用します。

于 2015-08-11T22:19:59.443 に答える