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

 テキストファイル(ほとんどが自作の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
などよく似た症状なのですが,真似いたしましても解決いたしませんでした・・
 もし,日本語と英語のテキストファイルすべてに通用するようなお勧め
エンコード方法のようなものがございましたら,ご紹介いただきたくお願い申し上げます.

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

このQ&Aに関連する最新のQ&A

A 回答 (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でした。
なぜ違うのだろう。。。(?_?)
    • good
    • 0
この回答へのお礼

 どうもありがとうございます!!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の上にエンコード種類のコンボボックスを追加します^^;
どうもありがとうございました!!!!

お礼日時:2009/12/07 00:42

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


よろしいかと。

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

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

ただ、あらかた、試しているようなので、
残りの可能性は utf-8 くらいしかない気がする。
    • good
    • 0
この回答へのお礼

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

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

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

お礼日時:2009/12/07 00:45

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q文字化けって英語で・・・? 

仕事で外国からのメールを受ける事がしばしばありますが、
時々名前などが文字化けしているメールを受け取ります。
本文は英語で書いてくれているのでいわんとすることは分かるのですが、
文字化けでお名前がわからないということなどを相手に伝えたいときは
英語ではどのように表現するればよいでしょうか?
また、文字化けとは英語でどういうのでしょうか?

Aベストアンサー

文字化けそのものを知っている相手(1 バイト文字の国の人)には "The page turned into garbage." と言いました。うちの会社だけだったかもしれませんが (^^;;
aqua さんが書かれているように、相手も 2 バイト文字の国の人でしたら、"Japanese fonts don't support the characters at the bottom of your e-mail. Would you mind writing it in English?" など、「日本語のフォントでは対応していない文字です。」と伝えてはいかがでしょうか。

QFOR文でtext1,text2,text3...などとどうやって処理させればいいのですか

超初心者な質問ですみません。
たとえばFOR文を使ってtext1~10まで連続に処理させるには
どういったコードを記述すればよいのでしょうか?
初心者用の本やHPを探しても見当たりませんでした。
お願いします。

Aベストアンサー

textエリアをインデックス配列にすればいいです。
Text1のエリアをファーム上でコピーし、貼り付けると
Text1(0)~ Text1(9) の配列になります。
それを
 
(例)

i =0
for i=0 to 9
text1(i) = x
next

のようにすればいいです。

Q海外からの中国語や英語のメールやSMSを文字化けなしに受信するには

海外からの中国語や英語のメールやSMSを文字化けなしに受信するには

海外から発信される中国語や英語のメールやSMSを受け取る場合、文字化けせずに受け取るにはどうすればよいでしょうか。

文字化けは携帯電話の機種によって、異なりますか?また、海外からのメールやSMS発信の場合、どんなフォントやシステムを使えば、日本の携帯に文字化けなしに送れますか。

また、海外のPCや携帯から日本語で送信されたメールが、携帯に届くと、日本語の文章なのに、文字化けしていることがあります。この問題を解決するには、相手にどんなフォントやシステムを使って文章を書いてもらえばいいでしょうか。

おわかりになる点がひとつでもありましたら、教えて下さい。お願いします。

Aベストアンサー

中国語で作成された物はともかくとして
相当変った環境でない限り
英語で作成された物が文字化けするとは思えません
(ですので以下の話は中国語限定)

文字化けする際は使っている機種によって違うでしょう
中国語が表示されない機種(フォントがない機種)に
中国語で送っているわけですから

>海外のPCや携帯から日本語で送信されたメールが
>携帯に届くと、日本語の文章なのに、文字化けしていることがあります。
>この問題を解決するには、相手にどんなフォントやシステムを使って文章を書いてもらえばいいでしょうか。
これは途中のサーバ経路で日本語対応などしていないと化ける可能性があります
その場合どうしようもありません

日本語で書いていてもメールのエンコード設定や使用している
フォントによっては化けることがあります

文字化けの理由については幅が広いのでメールヘッダ見たり中継サーバ
確認したりしないと一概に  これが原因  ということはいえません

QVB6変数の宣言dim j,k,p,m,n as Integerは良くない?

お世話になります。

VB暦1年です。

汎用の変数宣言でタイトルのように
dim j,k,p,m,n as Integer
dim ssa,ssb as String

など、カンマ区切りで変数宣言を使っていたのですが
最近、知人にasの手前の変数は型どおり宣言されるが
その手前の変数はVariant型で宣言されてしまうと指摘されました。

指摘されるまで気にはしていませんでしたが
ウォッチで確認すると変数に代入されるまでは
型がVariant/Emptyとなってます。

以後、気をつければいいのですが
過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。
後々、問題になるのかな?

Aベストアンサー

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというようなバグの原因になりやすいので、型を明示できるような状況で敢えてVariant型を使うべきではないです。

しかし、すでに納品してしまったコードについては、問題はメモリを余計に使ってしまうことくらいではないでしょうか?
他の人が気づかなかったことから考えるに、多分狭いスコープで使っていますよね? 比較対象や代入するべき型を誤るというようなロジックの誤りがない限り、少なくとも動作上の問題は発生しないと思います。ただ、直せる機会があるのであれば、直した方がいいとは思いますが。

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというよう...続きを読む

Q英語サイトの文字化けで困ってます

Macで英語のサイトを見ると文字化けすることがあって困っています。
何か重要なフォントを消してしまったのでしょうか?

例えば英語のウィキペディアのサイトが文字化けします。
http://en.wikipedia.org/wiki/Main_Page
しかし英語のヤフーは文字化けしてません。
http://m.www.yahoo.com/

Fierfox、Safariどちらで見ても同じことがおこります。
Mac 10.4.11です。

よろしくお願いいたします。

Aベストアンサー

#2です。
解決してよかったですね。

>FontBookでHelvetica.dfontが最優先に使われるように設定するにはどうしたらよいのでしょうか?
この方法は、Font BookでHelveticaの項目に表示される「Helvetica.dfont」以外のフォントを無効にします。
Font Bookを起動し、「フォント」列の中からHelveticaを選択し、右向きの三角形をクリックして内容を表示します。
フォント名の右側に何も印が付いていないものが現在使われているフォントです。そのフォントを選択し、右クリックして、使用停止を選択すれば、そのフォントが無効になります。フォントメニューから「フォント情報を表示」を選択すると、そのフォントのファイル名などが表示されますので、どこにインストールされているフォントなのかを確認して作業してください。

しかし、、
そうすると、Illustratorなどでは、他のフォントを使用できなくなり、いちいちフォントの有効、無効を切り替える必要が生じます。さきほどは、何が原因かを探るために、この方法を紹介しましたが、現実的ではありません。ですので、別の方法を考えたほうがいいかと思います。

Illustratorなど、アドビシステムズ社のソフトウェアだけで使用するフォントでしたら、お勧めとしては、
HD>ライブラリ>Application Support>Adobe>Fontsフォルダの中に使用したい他のヘルベチカ系フォントを入れてください。
そうすれば、Illustratorなど、アドビシステムズ社のソフトウェアでだけ、他のヘルベチカ系フォントが使用できるようになります。

もう1つの方法は、置き換わっているフォントを特定し、そのフォントを使用しないようにする方法です。
元の状態(文字化けしている状態)に、フォントを戻します。
文字化けしているページに移動し、文字化けしている部分の文字を数文字コピーします。
テキストエディットなどにコピーし、そのフォントが何であるかを特定します。
特定したら、そのフォントだけ、フォントブックで無効にします。
再度、文字化けしているページを表示し、まだ文字化けしているようなら、また同じ作業を繰り返します。

#2です。
解決してよかったですね。

>FontBookでHelvetica.dfontが最優先に使われるように設定するにはどうしたらよいのでしょうか?
この方法は、Font BookでHelveticaの項目に表示される「Helvetica.dfont」以外のフォントを無効にします。
Font Bookを起動し、「フォント」列の中からHelveticaを選択し、右向きの三角形をクリックして内容を表示します。
フォント名の右側に何も印が付いていないものが現在使われているフォントです。そのフォントを選択し、右クリックして、使用停止を選択すれば、そ...続きを読む

QMicroSoft BasicのDim文とVisualBasicのDim文の違い

私が20年前にMicroSoft Basicを使っていたときは、DIM文はDIMENSIONの略で配列型変数の宣言に使っていました。

最近VisualBasicの勉強を始めたのですが、変数の宣言はすべてDim文になっており、昔のMS BasicのDim文と意味合いが変わっているのに驚いています。

ここで質問させてください。
・なぜ配列を意味するDimension文が変数の宣言なのか?
・どのバージョンのBasicからDim文の意味が変わったのか?

私が使用していたのはNEC N-Basic,N-88Basic,N-98Basicです。

Aベストアンサー

VISUAL BASIC のDimは ディメンジョンの略です。
私の経験ではVB2.0時代からありました。

配列0を考えた場合変数とおなじであるからだとおもいます

Q自作の英語版ホームページが文字化け

自作の英語版ホームページが文字化けしていないかどうか
確認するために、ブラウザで「表示」→「エンコード」を
変更して見たところ、「自動選択」では全く問題がなかったのですが、「西ヨーロッパ言語」(Windows)では、若干文字化けしていました。
英語版の場合、英語圏で文字化けすることなく見ることができれば良いと思うのですが、ブラウザで確認する場合は
エンコードを何に変更して見るのが最も適当でしょうか。

Aベストアンサー

英語圏では一般的にISO8859-1が標準的に使用されているようです。METAタグには以下のように記述します。
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

METAタグで記述しておけばブラウザでエンコードを切り替えなくても自動的に判別してくれます。
文字化けしやすい例としては全角のスペースですね。
多国語に対応したエンコードとしてはUTFがあります。

QUnicodeでないファイルをUnicode保存

いつも楽しく勉強させていただいております。環境はWin7Office2010です。

ExcelVBAからFSOを用いてCSV形式のファイルを読み込み、多少の加工をして最終的にはSQLServerに取り込むという作業をしています。
問題はCSVファイルのことなのですが、どうやらUnicodeでないようでFSOで開くと文字化けしてしまうものがあります。
Excelやワードパッドで開くとちゃんと読めます。
StrConv関数でUnicodeに変換しようとしたのになぜかできませんでした。

今回はファイル数が少なかったので、手作業でワードパッドで開き、保存の形式をUnicodeにして事なきを得ましたが、今後同様のファイルを多数処理しないといけないので手作業での変換は難しいです。

そこで、こんなことは可能でしょうか。



・ExcelVBAで非Unicode形式のファイルを読み、Unicodeで別ファイルに書き出す。

または、

・ExcelVBAでワードパッドなどを制御し、自動的にファイルを開いてUnicodeで保存しなおす。

ついでといっては何ですが、そのファイルの文字コードが何であるかはどうやって分かりますか。
できればVBAを介して調べる方法があれば教えてくださるとうれしいです。

いつも楽しく勉強させていただいております。環境はWin7Office2010です。

ExcelVBAからFSOを用いてCSV形式のファイルを読み込み、多少の加工をして最終的にはSQLServerに取り込むという作業をしています。
問題はCSVファイルのことなのですが、どうやらUnicodeでないようでFSOで開くと文字化けしてしまうものがあります。
Excelやワードパッドで開くとちゃんと読めます。
StrConv関数でUnicodeに変換しようとしたのになぜかできませんでした。

今回はファイル数が少なかったので、手作業でワードパッドで開き、...続きを読む

Aベストアンサー

こちらが楽をさせてもらえそうです。
『VBAで、テキストファイルの文字コードを自動判定します。』
http://scripting.cocolog-nifty.com/blog/2007/02/vba_937b.html

文字コードの変換は、ADODB.Stream とかでも。
http://oshiete.goo.ne.jp/qa/7557074.html
(fS の宣言を忘れてました。。Object にてお願い)

なお、レジストリの、HKEY_CLASSES_ROOT\MIME\Database\Charset を覗いてみると・・
http://www.atmarkit.co.jp/fdotnet/dotnettips/013enumenc/enumenc.html

Q「文字化け」を英語で…。

ある海外の方と知り合い、文通をする事になりました。
相手の方が住所を教えて下さったのですが、
そこだけ文字化けしていたので読めませんでした。

「文字化けしているのでもう一度メールを送ってくれませんか?」
と言いたいのですが、『文字化け』は英語で何と言うのでしょうか?

Aベストアンサー

文字化けはfunny characters // garbled characters です。

下記の文章で伝わるかと思います。
I got a garbled e-mail from you. Could you e-mail me again?

QS-JISの2バイト文字をURLエンコードするには

VBでSJISの2バイト文字をURLエンコードをしたいのですが、適切にエンコードできません。
エンコード規則は「%上位バイトの16進数%下位バイトの16進数」では足りないのでしょうか?

例えば、「指」という文字を巷のエンコードサイトにかけると「%8Ew」という結果になりますが、

Public Sub test()
Dim strTmp As String
strTmp = Format(Hex(Asc("指")), "0000")
MsgBox ("%" & Left(strTmp, 2) & "%" & Right(strTmp, 2))
End Sub

だと「%80%00」になってしまいます。
「%00」は文字列終端コードだそうですが、どんな処理をかけたらよいのでしょうか?
解決法・調べ方等、何でも結構ですので、
ご教授下さいますようよろしくお願いします!

Aベストアンサー

エクセルVBAでテストしましたが…

Hex関数が返すのが文字列であるため
Format関数で"0000"しても
strTmpには正しい値が入っていません。

この場合はstrTmp = Hex(Asc("指"))
でいいのでは。
あと指のShiftJISコードは8E77(-29065)のようです。


人気Q&Aランキング

おすすめ情報