none
テキストファイルのエンコード形式を取得したい RRS feed

  • 質問

  • System.IO.StreamReaderを使用してファイルを開く際に、事前にファイルの
    エンコード形式を取得して開き、保存の際に同じエンコード形式で書き込みを
    行いたいのですが、ファイルのエンコード形式を取得する方法がわかりません。

    ご存知の方がいらっしゃいましたらアドバイス頂ければと思います。

     

    2006年7月7日 4:32

回答

  • 結構難しいと思いますよ。

    簡単な方法を私が知らないだけかもしれませんが、普通はその文字コードでしか使われていないコードを文書内から見つけて判断します。BOMがあればUnicodeであるという事ぐらいはわかりますが。

    よって、テキストファイルのある程度の長さが必要です。

    2006年7月7日 5:05

  • アドバイスありがとうございます。
    もしかしたら、Framework2.0になって便利な機能が付いてるかなと期待してみたのですが・・・

    リンク先のコードを参考に(・・・と言うかそのまま使えますね)させて頂きます。

    ありがとうございました。

     


     

     

    2006年7月11日 5:39

すべての返信

  • 結構難しいと思いますよ。

    簡単な方法を私が知らないだけかもしれませんが、普通はその文字コードでしか使われていないコードを文書内から見つけて判断します。BOMがあればUnicodeであるという事ぐらいはわかりますが。

    よって、テキストファイルのある程度の長さが必要です。

    2006年7月7日 5:05

  • アドバイスありがとうございます。
    もしかしたら、Framework2.0になって便利な機能が付いてるかなと期待してみたのですが・・・

    リンク先のコードを参考に(・・・と言うかそのまま使えますね)させて頂きます。

    ありがとうございました。

     


     

     

    2006年7月11日 5:39
  • http://msdn.microsoft.com/ja-jp/library/system.io.streamreader.currentencoding(v=vs.71).aspx

    2013年1月18日 2:12
  • どういう意図でその投稿をされたのかわかりませんが、CurrentEncoding はあくまで StreamReader を作ったときに決定されたエンコーディングを返すだけです。
    StreamReader のコンストラクタの説明を読んでいただければわかると思いますが、自動判定はしません。Encoding を省略した場合は UTF8Encoding で初期化されるだけですよ。

    Boolean を渡すタイプのコンストラクタでは、「UTF-8、リトル エンディアン Unicode、ビッグ エンディアン Unicode の各テキストが自動的に認識されます」とあるように、Unicode の一部は判定されます。
    しかし、それだけであり、ShiftJIS などが判定できるわけではありません。

    2013年1月18日 14:02
    モデレータ