差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
dotnet:encoding [2009/01/19 12:58] nakayamadotnet: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://123aspx.com/Rotor/RotorSrc.aspx?rot=42055|File: System.IO.StreamReader - 123aspx.com ASP.NET Resource Directory]]\\ 
 + [[http://123aspx.com/Rotor/RotorSrc.aspx?rot=42057|File: System.IO.StreamWriter - 123aspx.com ASP.NET Resource Directory]]\\ 
 ===== エンコーダ/デコーダが動作する規則 ===== ===== エンコーダ/デコーダが動作する規則 =====
  Encoding クラスから派生した ASCIIEncoding や UTF8Encoding は、エンコーダ/デコーダが動作する規則を表している。  Encoding クラスから派生した ASCIIEncoding や UTF8Encoding は、エンコーダ/デコーダが動作する規則を表している。
-そのため、文字コード変換(エンコード/デコード)を行う処理では、Encodingを指定することによってエンコー/デコーの動作を指定できる。+そのため、文字コード変換を行う処理では、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");+|Shift-JIS|Encoding.GetEncoding("shift-jis")
-|EUC-JP|Encoding.GetEncoding("euc-jp");|+|EUC-JP|Encoding.GetEncoding("euc-jp")| 
 +|UTF-8|Encoding.UTF8|StreamReader/StreamWriterを利用する場合は、UTF-8が既定値であるため指定する必要はない。| 
 ===== ファイルの読み込み ===== ===== ファイルの読み込み =====
 Shift-JISファイルの読み込みの例\\ Shift-JISファイルの読み込みの例\\
行 69: 行 80:
 int main(array<System::String ^> ^args) int main(array<System::String ^> ^args)
 { {
- try +    StreamReader sr("sjis.txt", Encoding::GetEncoding("shift-jis")); 
-+     
- StreamReadersr = gcnew StreamReader("sjis.txt", Encoding::GetEncoding("shift-jis")); +    // コンソール出力 
- // コンソール出力 +    Console::WriteLine(sr.ReadToEnd()); 
- Console::WriteLine(sr.ReadToEnd()); +    
- +
- finally +
-+
- delete (IDisposable^)sr; +
- }+
     return 0;     return 0;
 } }
 </code> </code>
 +
  • dotnet/encoding.1232337497.txt.gz
  • 最終更新: 2019/05/18 02:23
  • (外部編集)