none
GetEncodingメソッドでのUTF-16BE BOMなしへの変換 RRS feed

  • 質問

  • GetEncodingメソッドを利用して下記コード変換を行おうとしています

    変換前:Shift-JIS

    変換後:Unicode(UTF-16BE BOM無し)

    環境はWindowsXP SP2

        .NET  2.0.50727

    説明を読むと変換は環境に依存するとありますが、上記環境で変換は可能でしょうか?

    2015年2月25日 8:42

回答

  • 説明の読み方が足りていません。

    Encodingクラスにはサポートされているエンコーディングの一覧が載っていますが、その説明として

    次の表は、サポートされているエンコーディングと、それに関連付けられたコード ページの一覧を示しています。最後の列にアスタリスク (*) が付いているコード ページは、基になるプラットフォームに関係なく、.NET Framework でネイティブにサポートされています。

    と書かれています。Shift-JIS(932)は日本語OSであればサポートされます。unicodeFFFE(1201)は常にサポートされます。

    その上で、Shift-JISが必須なのでしょうか? 実際には「実行しているOSのデフォルトエンコーディング」を必要としていて、それが日本語OSだからShift-JISとなっているに過ぎない、というパターンがよくあります。もしそうであれば、GetEncodingを使わなくてもEncoding.Defaultプロパティで十分です。またUTF-16については特別にクラスが用意されており、UnicodeEncoding コンストラクタ (Boolean, Boolean)を使うことで、ビッグエンディアン・BOM無しを指定できます。

    • 回答の候補に設定 星 睦美 2015年3月2日 4:54
    • 回答としてマーク 星 睦美 2015年3月6日 2:16
    2015年2月25日 10:02