3

あなたの助けが必要です。私を助けてください。

私はDelphi 2010を持っています

英語版の Windows 7 で、サイトから idHTTP.Get Unicode テキスト (ロシア語) を含むファイルを MemoryStream に取得しようとしています。

次に、この MemoryStream を Unicode テキストと共にメモなどに読み込みます。

コントロール パネルでロシア語を「非 Unicode プログラムの言語」に設定すると、テキストがメモに正しく表示されます。しかし、英語を設定すると、間違った文字が表示されます (*$^#~!@)。

サイトから idHTTP.Get を使用して Unicode でロシア語のテキストを読み込んで、任意の Windows (中国語、英語など) で正しく表示するにはどうすればよいですか?

ご協力ありがとう御座います!!!

4

3 に答える 3

1

TMemo は Unicode (UTF-16 エンコード) テキストを想定しています。TIdHTTP.Get()を埋めるのバージョンを使用してテキストをダウンロードする場合TStreamは、生の (通常は Ansi エンコードされた) テキストをダウンロードし、それを Unicode に手動でデコードしてからTMemo.

ウェブサーバーが応答ヘッダーのテキストに正しい文字セットを指定していると仮定すると、代わりTIdHTTP.Get()に a を返すバージョンを使用しますStringTIdHTTP文字セットを検出し、生データを Unicode にデコードします。たとえば、次のようになります。

Memo1.Text := IdHTTP1.Get('http://addr_here');
于 2011-06-10T21:18:09.980 に答える
1

Unicode 対応の最新の Delphi バージョンに更新することをお勧めします。

更新:メモリストリームには、実際の Unicode テキストではなく、特定のコード ページの AnsiText が実際に含まれているようです。そのコードページで適切な AnsiString 変数を宣言し、テキストをその変数にロードしてから、変数をメモにロードできます。

実際のデータを見ないと、それ以上のことはわかりません。

于 2011-06-07T16:58:41.803 に答える
-1
  • D2009以降にアップデート
  • Unicode をサポートするコンポーネントを使用する ( TMSがいくつかのコンポーネントを提供していることを覚えています)
  • 使用している言語の文字セット/コード ページを正しく設定する
于 2011-06-07T17:12:38.893 に答える