@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

UNICODE?UTF8?

1
投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-08-29 20:35
こんにちは。

 Webサービスを使用して、ユーザローカルにあるファイルをサーバで読み込み、処理をしようとしています。ここで、.NETのセキュリティにより、OpenFileDialogのFileNameプロパティーが使用できません。OpenFileメソッドを使用し、Stremから読み込めばよいとは思うのですが、S-JISでかかれたファイルを読み込むと文字化けします。.NET内ではUNICODEが処理されているからだと思います。ここで、S-JISからUNICODEにエンコードするにはどうしたらよいのでしょうか。
 反対に、ログをとるときにもUNICODEで書いてしまいます。UNICODEからS-JISへデコードするには、どうしたらよいのでしょうか。

 一応、「"S-JIS" or "SJIS" or "シフトJIS" or "文字コード"」でMSDN(オンライン、オフライン)を検索しましたが、該当なしでした。System.Text空間にはUTF8、UTF7、Unicode、ASCII(7ビット)のエンコーダはあるようですが、シフトJIS用はないみたいでした。
だいぼう
会議室デビュー日: 2002/07/24
投稿数: 9
投稿日時: 2002-08-30 03:40
System.Text.Encodingクラスを用いて変換することができると思います。
例えば、SJIS用のEncodingクラスを取得する場合、
System.Text.Encoding.GetEncoding("shift-jis")
で取得できます。

それで、SJISのファイルを読むのであれば次のように、StreamReaderクラスを作ればいいと思います。
FileStream fs = new FileStream(入力ファイル名, FileMode.Open);
StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("shift-jis"));

あとは、StreamReaderから読み出せば良いのではないかと思います。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-08-30 08:05
引用:

だいぼうさんの書き込み (2002-08-30 03:40) より:
System.Text.Encodingクラスを用いて変換することができると思います。
例えば、SJIS用のEncodingクラスを取得する場合、
System.Text.Encoding.GetEncoding("shift-jis")
で取得できます。



 ありがとうございます。コードページの表は見たのですが、その下は見落としていました。

#しかし、なぜ「検索」でかからない←"shift-jis"
1

スキルアップ/キャリアアップ(JOB@IT)