2016-06-27 9 views
0

TXTファイルの行を読み込む必要があるアプリケーションを作成します(ファイルはZIPアーカイブに保存されるため、C#ストリームを使用して展開してメモリで操作します)。エンコーディングによってファイルの読み込みが異なりません

入力ファイルはASCIIまたはUTF8のようにエンコードされています(どのファイルがどのファイルかはわかりません)。データには、ポーランド語またはチェコ語の文字が含まれている文字列が含まれています。ファイルが小さい(1〜5kB)

最初の質問UTF8のようなファイルを強制的に読み込むと、ポーランド文字がASCIIファイルから正しく表示されず、逆もあります。何か案が?簡単な方法でファイルのエンコーディングを検出するにはどうすればよいですか?この情報はTXTファイルのメタデータに保存されていますか?

2番目の質問:NotePad ++にTXTファイルを表示すると、ファイルがどのようにエンコードされているかがわかります。 NotePad ++はそれをどのように知っていますか?

+0

https://en.wikipedia.org/wiki/Byte_order_mark –

+1

...あなたは*正確に*何を意味していますか? (ASCIIにアクセント付きの文字はなく、すべてのASCIIファイルはその意味を変えずにUTF-8として扱うことができます) –

+0

Unicodeエンコーディングを探しているようです。 – Ingenioushax

答えて

1

おそらく、あなたはどのエンコーディングを強制しないでください。

String text = File.ReadAllText(@"C:\MyFile.txt"); 

にシステム(だけでなく、メモ帳+)を、いわゆるBOM(バイトオーダーマーク)を使用して、実際のエンコーディングを検出しようとします

私はあなたが本当にASCIIを意味するものではありません疑う

https://en.wikipedia.org/wiki/Byte_order_mark

関連する問題