質問

 今晩は,いつも勉強させていただいております.
質問させていただきます.どうぞよろしくお願いいたします.

 テキストファイル(ほとんどが自作のFortranコードで,英語と日本語のみで
ございます)を読み込みたいのですが,全角文字の読み込み
(下記コードになります)で文字化けいたします..
 Dim SR As New System.IO.StreamReader(FileName, System.Text.Encoding.GetEncoding(51932))
  '↑ここのエンコード(?)が怪しいのでは,などと考えている次第です.
 Dim text As String = SR.ReadToEnd()
 MsgBox("/" & text & "/")
   '↑「text」が化けます...

 エンコード(?いまいち理解しておりませんorz)の種類がおかしいのでは,
というところまでなんとか行き着きまして,色々と検索いたしておりますと
 http://www.atmarkit.co.jp/fdotnet/dotnettips/013 …
にまとめてくださっておりましたので,思いつく数字を「51932」の代わりに
入れてみましたが,どれも全角文字が文字化けいたします..
「0 shift_jis 日本語 (シフト JIS) 」
「932 shift_jis 日本語 (シフト JIS) 」
「1200 utf-16 Unicode 」
「51932 euc-jp 日本語 (EUC) 」「1200 utf-16 Unicode 」

 もしかすると別の部分に問題があるのかもしれませんが..
調べておりますと,
http://dobon.net/vb/bbs/log3-25/15325.html
などよく似た症状なのですが,真似いたしましても解決いたしませんでした・・
 もし,日本語と英語のテキストファイルすべてに通用するようなお勧め
エンコード方法のようなものがございましたら,ご紹介いただきたくお願い申し上げます.

 お詳しい方がいらっしゃいましたら,是非ともアドバイスいただきたく
どうぞよろしくお願いいたします

通報する

回答 (2件)

試していないエンコードのうち、可能性が高そうな順で。。。

65001utf-8Unicode (UTF-8)
1201unicodeFFFEUnicode (Big-Endian)
50220iso-2022-jp日本語 (JIS)
20932EUC-JP日本語 (JIS 0208-1990 and 0212-1990)
10001x-mac-japanese日本語 (Mac)

エンコードが分からなくなった時の我流の調べ方
1. バイナリを見て判断。
2. ブラウザで開いて正しく表示されるエンコードを探す。
3. メモ帳で開いて文字化けしなければ「名前を付けて保存」の文字コードを確認。

あと、お気づきかもしれませんが、コードページ 0 は、システムの既定のエンコードです。Windowsが日本語版だからこそshift_jisになっているだけですので 0 = shift_jis と覚えないようにご注意を。

おすすめのエンコード。。。
私がよく使うのは、Unicode(UTF-16), UTF-8, Shift_JISあたりですかね。XMLやHTMLはUTF-8で書くことがほとんどです。

どーでもいい話ですが、気になったのでVisual Studio 2005のコードを見てみたらVB(*.vb)はShift_JIS、C#(*.cs)はUTF-8でした。
なぜ違うのだろう。。。(?_?)

この回答へのお礼

 どうもありがとうございます!!m(_ _)m

>可能性が高そうな順で。。。
>65001 utf-8 Unicode (UTF-8)
ビンゴでございます^^b

>2. ブラウザで開いて正しく表示されるエンコードを探す。
あ.確かにMsgBoxの表示と同じ化け方になりました.
>3. メモ帳で開いて文字化けしなければ「名前を付けて保存」の文字コードを確認。
なんとメモ帳の保存時に出ていたんですね.今まで気付きませんでした^^;
どうもありがとうございます!

>あと、お気づきかもしれませんが~
> 0 = shift_jis と覚えないようにご注意を。
今知りました!w 覚えます!(`-´ゞ

>よく使うのは、Unicode(UTF-16), UTF-8, Shift_JIS
どうもありがとうございます!!助かります!
>VB(*.vb)はShift_JIS、C#(*.cs)はUTF-8でした
と併せて考えても,今後読み込むソースファイルに応じてエンコード方法を
変える必要があるということですね・・実際,UTF-8にしてから
他のファイル(日本語文書)が読めなくなりました・・orz 
今後のためにプログラム側からエンコードを知る方法が何かあれば良いのですが・・

 色々とアドバイスいただきまして,どうもありがとうございました!!
とりあえず今からFormの上にエンコード種類のコンボボックスを追加します^^;
どうもありがとうございました!!!!

とりあえず、今のテキストファイルのエンコードの種類見てみれば
よろしいかと。

自分がよくやるのは
エディタ(秀丸等)で開いて「エンコードの種類」を見て判断しています。

エディタ(秀丸等)で開いたとき、エンコード失敗のエラーが出たら、
ファイルのフォーマット異常の可能性も判断できますし。

ただ、あらかた、試しているようなので、
残りの可能性は utf-8 くらいしかない気がする。

この回答へのお礼

 どうもありがとうございます!!
秀丸で確認してみましたところ,utf-8でございました.
No.2氏からもutf-8の番号をご紹介いただけておりましたので
試してみましたところ,読めるようになりました^^
・・しかしFortlanコード以外の普通の文書が読めなくなりました orz
この続きはまた検索して頑張ってみます.

>エディタ(秀丸等)で開いたとき、エンコード失敗のエラーが出たら、
>ファイルのフォーマット異常の可能性も判断できますし。
 存じませんでしたm(_ _)m 勉強になります.どうもありがとうございます!

 この度はご閲覧・アドバイスいただきましてどうもありがとうございました.
ありがとうポイントですが,No.2氏からお勧めエンコードも詳しく
ご紹介いただけましたのでNo.2氏に優先して付けさせていただきます.
 また見かけたらどうぞ助けてやってくださいm(_ _)m
この度はおかげで助かりました.^^どうもありがとうございました!!

このQ&Aは役に立ちましたか?2 件

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

新しく質問する

注目の記事

おしトピにAndroid版アプリが登場

話題のトピックにさくっとコメントできる「おしトピ」に Android版アプリが登場! もっと身近に使いやすくなりました。
今ならダウンロードで話題の掃除ロボットや全天球カメラが 当たるプレゼントキャンペーンも実施中。


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ