差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
dotnet:encoding [2009/02/25 12:39] – ともやん | dotnet:encoding [2019/05/18 02:23] (現在) – 外部編集 非ログインユーザー | ||
---|---|---|---|
行 2: | 行 2: | ||
===== テキストの内部表現とエンコーダ/ | ===== テキストの内部表現とエンコーダ/ | ||
.NET Framework がテキストを保持する際の内部表現は Unicode UTF-16 である。 | .NET Framework がテキストを保持する際の内部表現は Unicode UTF-16 である。 | ||
- | 例えば、Shift-JIS形式のファイルからデータを読み込む場合、デコーダはShift-JISを内部表現のUTF-16に変換する。 | + | 例えば、Shift-JIS形式のファイルからデータを読み込む場合、Shift-JISデコーダはShift-JISを内部表現のUTF-16に変換する。 |
- | また、Shift-JIS形式のファイルにデータを書き込む場合、エンコーダは内部形式のUTF-16をShift-JISに変換する。 | + | また、Shift-JIS形式のファイルにデータを書き込む場合、エンコーダは内部形式のUTF-16をShift-JISに変換する。\\ |
+ | \\ | ||
+ | 具体的には、StreamReader はファイルを内部バッファに読み込み、encoding.GetDecoder() にて取得した decoder を利用して、バッファのデータを decoder.GetChars() を使用しデコードする。\\ | ||
+ | 一方 StreamWriter は encoding.GetEncoder() にて取得した encoder を利用して、内部バッファのデータを Flush する時に encoder.GetBytes() を使ってエンコードし stream に Write して Flush する。\\ | ||
+ | \\ | ||
+ | 参考文献: | ||
+ | [[http:// | ||
+ | [[http:// | ||
===== エンコーダ/ | ===== エンコーダ/ | ||
Encoding クラスから派生した ASCIIEncoding や UTF8Encoding は、エンコーダ/ | Encoding クラスから派生した ASCIIEncoding や UTF8Encoding は、エンコーダ/ | ||
- | そのため、文字コード変換を行う処理では、Encodingを指定することによってエンコーダ/デコーダの動作を指定できる。 | + | そのため、文字コード変換を行う処理では、Encodingを指定することによってエンコード/デコードの動作を指定できる。 |
===== 頻繁に利用されるEncoding派生クラス ===== | ===== 頻繁に利用されるEncoding派生クラス ===== |