C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

JIS->Shift JIS変換


(過去ログ 3 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■3041 / inTopicNo.1)  JIS->Shift JIS変換
  ▼■
□投稿者/ Ken 二等兵(3回)-(2006/04/07(Fri) 13:21:52)

分類:[VB.NET] 


分類:[VB.NET] 

いつも参考にさせていただいてます。
JISコードでかかれたテキストファイルをShitJISに変換したいのですがどのように
したらよいかわかりません。

Dim sr As New System.IO.StreamReader("D:\work\Recv.dat", _
System.Text.Encoding.GetEncoding(932))

としたらよいかとも思ったのですが、できませんでした。
どのようにしたらよいのか教えて下さい。お願いいたします。

windowsXP VB.NET2005

0
引用返信 編集キー/
■3042 / inTopicNo.2)  Re[1]: JIS->Shift JIS変換
▲▼■
□投稿者/ Hongliang 二等兵(9回)-(2006/04/07(Fri) 13:46:00)
Hongliang さんの Web サイト

分類:[VB.NET] 

JIS(ISO-2022-JP) を使って StreamReader を作り、String に読み出して、
それから Shift_jis を使って作った StreamWriter で書き出せばいいでしょう。

0
引用返信 編集キー/
■3045 / inTopicNo.3)  Re[2]: JIS->Shift JIS変換
▲▼■
□投稿者/ Ken 二等兵(4回)-(2006/04/07(Fri) 16:16:10)

分類:[VB.NET] 

■No3042に返信(Hongliangさんの記事)
> JIS(ISO-2022-JP) を使って StreamReader を作り、String に読み出して、
> それから Shift_jis を使って作った StreamWriter で書き出せばいいでしょう。

以下のようにしてみたのですが、変換ができてないように思います。

Dim ss As String = String.Empty
Dim sr As New System.IO.StreamReader("D:\work\Recv.dat", _
System.Text.Encoding.GetEncoding("ISO-2022-JP"))
'// 内容を一行ずつ読み込む
While sr.Peek() > -1
' ''Console.WriteLine(sr.ReadLine())
ss &= sr.ReadLine
End While
'// 閉じる
sr.Close()

'ファイルを上書きし、Shift JISで書き込む
Dim sw As New System.IO.StreamWriter("c:\test.txt", False, _
System.Text.Encoding.GetEncoding(932))
'TextBox1.Textの内容をすべて書き込む
sw.Write(ss)


0
引用返信 編集キー/
■3046 / inTopicNo.4)  Re[3]: JIS->Shift JIS変換
▲▼■
□投稿者/ Hongliang 二等兵(11回)-(2006/04/07(Fri) 16:40:36)
Hongliang さんの Web サイト

分類:[VB.NET] 

変換できていないって事をどうやって確認しましたか?
私が試した限り、「abcあいうdef」である
61 62 63 1B 24 42 24 22 24 24 24 26 1B 28 42 64 65 66
が
61 62 63 82 A0 82 A2 82 A4 64 65 66
に変換されましたが。


> '// 内容を一行ずつ読み込む
> While sr.Peek() > -1
> ' ''Console.WriteLine(sr.ReadLine())
> ss &= sr.ReadLine
> End While

これだと改行が消えてしまいます。
sr.ReadToEnd()で一気に全部読んだ方が良いかと思います。

0
引用返信 編集キー/
■3047 / inTopicNo.5)  Re[4]: JIS->Shift JIS変換
▲▼■
□投稿者/ 魔界の仮面弁士 曹長(85回)-(2006/04/07(Fri) 17:00:22)
魔界の仮面弁士 さんの Web サイト

分類:[VB.NET] 

2006/04/07(Fri) 17:15:32 編集(投稿者)

> 変換できていないって事をどうやって確認しましたか?

System.Text.Encoding.Convert() を使って一括変換させてみましたが、
幾つか変換できない文字がありました。


《元ファイル / iso-2022-jp 》
1B-24-42-2D-70-2D-71-2D-72-1B-28-42-0D-0A-
1B-24-42-22-62-22-61-22-69-1B-28-42-0D-0A

《期待する結果 / Shift_JIS 》
87-90-87-91-87-92-0D-0A-
81-E0-81-DF-81-E7-0D-0A

《実際の結果 / Shift_JIS 》
81-E0-81-DF-81-E7-0D-0A-
81-E0-81-DF-81-E7-0D-0A


上記のような変換ミスを許容できるのであれば、System.Text.Encoding で
対応できると思います。許容できないのであれば、自分で変換するという
泥くさい方法しか思いつきませんけれども……。m(_ _;)m

0
引用返信 編集キー/
■3049 / inTopicNo.6)  Re[5]: JIS->Shift JIS変換
▲▼■
□投稿者/ Ken 二等兵(5回)-(2006/04/07(Fri) 17:30:34)

分類:[VB.NET] 

みなさんすいません。
いろいろ確認していたらEBCDICコードでした。

元ファイルが
F0-F3-F1-F1-F1-F0-F0-F0-F0-F0-F0-F0-F0-F1-40-3B
です

期待しているデータは、
30-33-31-31-31-30-30-30-30-30-30-30-30-31-90-B9

「03111000000001聖」というデータを取得したいのですが、
どのようにしたらよいかわかりません。

System.Text.Encoding.GetEncoding(20290)として読みこんで
みたのですが「聖」が化けてしまいます。


0
引用返信 編集キー/
■3050 / inTopicNo.7)  Re[6]: JIS->Shift JIS変換
▲▼■
□投稿者/ Hongliang 二等兵(12回)-(2006/04/07(Fri) 20:26:50)
Hongliang さんの Web サイト

分類:[VB.NET] 

EBCDIC は 8 ビットの文字コード体系ですから、それはどこかのベンダのマルチバイトに対応させた独自拡張ですね。
.NET では標準では扱えない文字コードのようです。仕様を調べて自前でデコードするか、そのコードを制定したベンダとかが提供しているのならそのミドルウェアなどを使う必要があるでしょう。
// マルチバイト部分がエスケープなしの ISO-2022-JP だと色々 EBCDIC とかぶっちゃいそうだけど、どう回避してるんだろ。

どこかで見たことがあるような気がしてたら多分これと同じですね。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=12591&forum=7

0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -