質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

5974閲覧

[C#]StreamReaderと文字エンコーディングについて

kurosuke___

総合スコア217

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2016/07/22 03:53

こんにちは、毎度お世話になっております。

今回、StreamReaderを使ってUTF-8のCSVFilenameをよみこみ(GetEncodingの指定はしていません)、ListにいれてからToArray()で2次元配列にし、それを

C#

1TextBox1.Text = string.Format("{0}{1}",csv[0][0],"文字列")

のようにして、テキストボックスに表示する処理を書きました。

読み込むCSVファイルのエンコーディングがutf-8の場合はちゃんと表示されるのですが、

FCchecker(http://www.vector.co.jp/soft/dl/winnt/util/se478635.html)というソフトを用いて

utf-8からShift-jisに変換したcsvファイルを読み込んだ場合は、TextBox1に表示すると日本語が文字化けしてしまいます。

これはなぜなんでしょうか?

また、今回はStreamReaderのGetEncodingは何も指定していませんが、
FCcheckerでの変換と、StreamReaderのGetEncodingで元のエンコーディングと違うエンコーディングを指定した場合とは、何か違ったりするんでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

StreamReader クラス

原文

StreamReader defaults to UTF-8 encoding unless specified otherwise, instead of defaulting to the ANSI code page for the current system.

機械翻訳

StreamReader utf-8 エンコーディングの既定では、現在のシステムの ANSI コード ページではなく、それ以外の場合、指定しない限り、既定値です。

ということだそうです。

###追記
もう一つ。
文字コードを指定してテキストファイルを読み込む

もしテキストファイルがBOMが付加したUnicodeかUTF-8の場合は、StreamReaderのコンストラクタでEncodingの指定を省略できます。

つまり、エンコーディングの指定を省略した場合、それは BOM が無ければ UTF-8 として、あればそのエンコーディングとして読み込まれるということです。

投稿2016/07/22 04:09

編集2016/07/22 04:15
Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kurosuke___

2016/07/25 04:04

返事が遅れてすみません。 回答有り難うございます。 BOM無しのutf-8ですべて運用するようにしたところ、うまくいきました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問