差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| dotnet:encoding [2009/01/19 12:59] – nakayama | 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派生クラス ===== | ||
| ^クラス名^説明^ | ^クラス名^説明^ | ||
| 行 15: | 行 24: | ||
| |UTF32Encoding|UTF-32エンコーディングを使用してUnicode文字をエンコードする。リトル エンディアン(コード ページ 65005)とビッグ エンディアン(コード ページ 65006)の両方のバイト順をサポートしている。\\ Encoding.UTF32プロパティを通じても使用できる。| | |UTF32Encoding|UTF-32エンコーディングを使用してUnicode文字をエンコードする。リトル エンディアン(コード ページ 65005)とビッグ エンディアン(コード ページ 65006)の両方のバイト順をサポートしている。\\ Encoding.UTF32プロパティを通じても使用できる。| | ||
| ===== 頻繁に利用されるエンコーディング ===== | ===== 頻繁に利用されるエンコーディング ===== | ||
| - | ^文字コード^コード例^ | + | ^文字コード^エンコーディング取得方法^備考^ |
| - | |ASCII|Encoding.ASCII;| | + | |ASCII|Encoding.ASCII| | |
| - | |Shift-JIS|Encoding.GetEncoding(" | + | |Shift-JIS|Encoding.GetEncoding(" |
| - | |EUC-JP|Encoding.GetEncoding(" | + | |EUC-JP|Encoding.GetEncoding(" |
| + | |UTF-8|Encoding.UTF8|StreamReader/ | ||
| ===== ファイルの読み込み ===== | ===== ファイルの読み込み ===== | ||
| Shift-JISファイルの読み込みの例\\ | Shift-JISファイルの読み込みの例\\ | ||
| 行 69: | 行 80: | ||
| int main(array< | int main(array< | ||
| { | { | ||
| - | try | + | |
| - | { | + | |
| - | StreamReader^ sr = | + | |
| - | gcnew StreamReader(" | + | Console:: |
| - | // コンソール出力 | + | |
| - | Console:: | + | |
| - | } | + | |
| - | finally | + | |
| - | { | + | |
| - | delete (IDisposable^)sr; | + | |
| - | } | + | |
| return 0; | return 0; | ||
| } | } | ||
| </ | </ | ||
| + | |||