2012-04-23 11 views
0

テキストファイルにö、ä、üなどの文字が含まれていて、ファイルがANSIでエンコードされています。私はそれを読んで、すべてのデータをデータテーブルに入れたいと思います。私のコードは次のとおりです。C#でエンコードされたテキストファイルを読み取る

private DataTable GetTextToTable(string path) 
    { 
     try 
     { 
      DataTable dataTable = new DataTable(); 
      int rowNo = 0; 
      using (StreamReader sr = new StreamReader(path,Encoding.Default,true)) 
      { 
       DataRow dr = null; 
       String line; 
       while ((line = sr.ReadLine()) != null) 
       { 
        dr=dataTable.NewRow(); 
        if (rowNo == 0) 
        { 
         string[] Columns = line.Split(new string[] { "\t" }, StringSplitOptions.None); 
         for (int i = 0; i != Columns.Length; i++) 
         { 
          DataColumn dc = new DataColumn(); 
          dc.ColumnName = Convert.ToString(Columns[i]); 
          dataTable.Columns.Add(dc); 
         } 
         rowNo = rowNo + 1; 
        } 
        else 
        { 

         string[] ColumnsValue = line.Split(new string[] { "\t" }, StringSplitOptions.None); 
         for (int i = 0; i != ColumnsValue.Length; i++) 
         { 
          dr[i] = ColumnsValue[i]; 
         } 
         dataTable.Rows.Add(dr); 
        } 

       } 
      } 
      return dataTable; 
     } 
     catch (Exception e) 
     { 
       throw new Exception(e.Message); 
     } 

    } 

そして出力、私はこのコードから取得しています:また、öと同じ方法で、残りのAの文字の任意の組み合わせを取得し、U字型文字のために½¿。 私を助けてください! ありがとうございました!

+4

"ANSI"は特定のエンコーディングではありません。異なるエンコーディングの多くは、「ANSI」または「悪い」「拡張ASCII」と呼ばれることがよくあります。ファイルの* exact *エンコーディングを見つけてそれを使用するべきです。 –

+0

ファイルが_actually_ UTF8で、マルチバイトシーケンスを使用しているようです。 – SLaks

+0

http://www.joelonsoftware.com/articles/Unicode.html、覗き見へのリンク: – bas

答えて

0

あなたの問題を見つけるのに役立つ16進形式のファイルを見ることができるWinHex(無料)のようなものをダウンロードすることをお勧めします。

これは単なる推測ですが、あなたのプログラムが生の16進数を読み取っていて、それをASCIIに変換するように言われていないようです。 EDITまた、読んでいるファイルで使用されているエンコーディング形式は問わない。

+0

お返事ありがとうございました。 @ Jon Skeet先生、私のリンクテキストを使用してください/私の例のテキストファイルのようにエンコードされているANSIと言っているテキストファイルで使用されている正確なエンコーディングを見つけることがあります。 – vicky

関連する問題