2012-05-08 4 views
5

いくつかの値を他の値に置き換えて、パラメータとして使用するために使用するC#プログラムがあります。 'NAME1'のように、& 1、 'NAME2'は& 2などと置き換えられます。C#でUNIXエンコードされたファイルを読む

問題は、変更するデータがUNIXでエンコードされたテキストファイルにあり、íなどの特殊文字がメモリ上であっても正方形(無効な文字)として読み取られることです。私のコントロール外の仕様で、ファイルを変更することはできませんし、そのように読むよりも他の選択肢はありません。

私は私を提供しています#cが130のエンコーディングのほとんどを読むことをしようと試みています

EncodingInfo[] info = System.Text.Encoding.GetEncodings(); 
string text; 
for (int a = 0; a < info.Length; ++a) 
{ 
     text = File.ReadAllText(fn, info[a].GetEncoding()); 
     File.WriteAllText(fn + a, text, info[a].GetEncoding()); 
} 

fnが読み込むファイルのパスです。 (130のような)すべての作られたファイルをチェックしたが、誰もインターネット上で何も見つけられないアイデアとイムが正しく書かれていない。

SOLUTION:

System.Text.Encoding encoding = System.Text.Encoding.GetEncodings()[41].GetEncoding(); 

String text = File.ReadAllText(fn, encoding); // get file text 

// DO ALL THE STUFF I HAD TO 

File.WriteAllText(fn, text, encoding) System.Text.Encoding.GetEncodings()[115].GetEncoding(); //Latin 9 (ISO) 

/* ALL THIS ENCODINGS WORKED APARENTLY FOR ME WITH ALL WEIRD CHARS I WAS ABLE TO WRITE :P 
    System.Text.Encoding.GetEncodings()[108].GetEncoding(); //Baltic (ISO) 
    System.Text.Encoding.GetEncodings()[107].GetEncoding(); //Latin 3 (ISO) 
    System.Text.Encoding.GetEncodings()[106].GetEncoding(); //Central European (ISO) 
    System.Text.Encoding.GetEncodings()[105].GetEncoding(); //Western European (ISO) 
    System.Text.Encoding.GetEncodings()[49].GetEncoding();  //Vietnamese (Windows) 
    System.Text.Encoding.GetEncodings()[45].GetEncoding();  //Turkish (Windows) 
    System.Text.Encoding.GetEncodings()[41].GetEncoding();  //Central European (Windows) <-- Used this one 
    */ 

はあなたのためにありがとうございました:

が最終的にこのコードが正しくテキストを取得するために仕事をしたように、また、書き込み部に同じエンコーダを修正しなければならなかったルックス

NOMANを助ける(1)

+2

ファイルのエンコードは何ですか?それを知らずに、あなたが続けなければならないのは推測です。それがUNIXマシン上にあることは無関係です。 – Oded

+1

+1を自動推測のために+1しましたが、今ではあなたのソースに戻って、Odedのように「ファイルに書かれたものは何ですか?がんばろう! – shellter

+0

私はソースを知ることができませんことを申し訳ありませんが、唯一の私が知っているのは、メモ帳でUNIX ANSIとしてマークされていることです、それは[somefiles with *] myFile.txtをコピーしたバットから作成されます。私はそれらのほとんどがOracleまたはExcelスクリプトからの "保存"機能から作成された –

答えて

2

あなたは正しいエンコーディング形式を取得する必要があります。試してください。

ファイル-iを使用してください。これにより、ファイルのMIMEタイプ情報が出力されます。 には、文字セットエンコーディングも含まれます。私も、そのための man-pageを見つけました:)

か、推測とさえエンコーディングの間で変換することができますenca

を試しを。マニュアルページ を見てください。

適切なエンコード形式をお持ちの場合は、ファイルの読み込みに適用する方法を探してください。

引用:How to find encoding of a file in Unix via script(s)

+0

解決策を見つけました。 6時間以上経過するまでは投稿できません=) –

関連する問題