2011-09-12 8 views
1

最近、私は文字列とエンコーディングのすべてがどのように機能するかについて読んでいます。FrameworxがEncoding.Convertメソッドをどのように行うかに関する質問

私の質問は、この、メソッドです:

public static byte[] Convert(
Encoding srcEncoding, 
Encoding dstEncoding, 
byte[] bytes 
) 

何が実際には、各文字をチェックするためのStringBuilderを使用して、指定されたエンコーディングや内容に応じてそれらを交換され、舞台裏で起こっていますか?

答えて

0

私はそれが効果的にことを期待したい:

string text = srcEncoding.GetString(bytes); 
return destEncoding.GetBytes(text); 

今ではそれよりも多くのメモリ効率の良い方法でそれを行うことができます - しかし、効果的に、それは、元のバイナリデータをデコードし、それをエンコードする必要がありますもう一方のエンコーディングではバイナリデータとして再度使用します。

文字単位でエンコードを行うことは必ずしも機能しないことに注意してください。たとえば、1つのUTF-8バイトシーケンスをUTF-16コードユニットのサロゲートペアとして表現された1つのUnicodeコードポイントにデコードする(char値)。 Encoderとデコーダーpair would allow "chunks" of data to be encoded/decoded at a time, removing the need for the whole text data to be in memory at one time... possibly writing to a MemoryStream`などを使用して、エンコードされたデータを保存します。

+0

情報をありがとう、それはidがそれをしたと思っていた、投稿する時間を取ってくれたことはありがとう – Andreas

関連する問題