VB.NETでUTF-16(Big-Endian)からShift_JISへの変換

現在作成中の VB.NET プログラムで扱うファイルが UTF-16 の、しかも Big-Endian で書かれているのを今日知った。(^^;

そのデータをインターネット上から取得して、他のプログラムで使用するためにディスク上に保管するのだが、その、「他のプログラム」が「Shift_JIS で書かれているファイル」を期待しているようである。

つーことで、UTF-16(Big-Endian) のファイルを Shift_JIS に変換して出力する処理を試しに書いてみた。

Imports System
Imports System.IO
Imports System.Text
Imports System.Collections

Module Module1

    Sub Main()

        Dim value As String
        value = FileRead("U16BE.txt")
        FileWrite("SJIS.txt", value)

    End Sub

    Function FileRead(ByVal Fn As String) As String
        '---------------------------------------------------------
        ' UTF-16(Big-Endian) 形式で書かれたテキストを読み込む
        '---------------------------------------------------------

        Dim sr As New StreamReader(Fn, Encoding.BigEndianUnicode)
        Dim val As String = sr.ReadToEnd()
        sr.Close()

        Return val

    End Function

    Sub FileWrite(ByVal Fn As String, ByVal Value As String)
        '---------------------------------------------------------
        ' テキストを Shift_JIS 形式で出力する
        '---------------------------------------------------------

        Dim val As StreamWriter = New StreamWriter(New FileStream(Fn, FileMode.Create), Encoding.GetEncoding("shift_jis"))
        val.Write(Value)
        val.Close()

    End Sub

End Module

これで、問題無し。

まあ、よく考えたら、確か VB.NET の内部処理は UTF-16 で行われているので、うまくいって当たり前だわな。

トラックバック(0)

このブログ記事を参照しているブログ一覧: VB.NETでUTF-16(Big-Endian)からShift_JISへの変換

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/1304

コメントする

このブログ記事について

このページは、shinodaが2010年10月 5日 00:22に書いたブログ記事です。

ひとつ前のブログ記事は「デバッグ実行後に自動的にコンソール画面を閉じないようにする」です。

次のブログ記事は「早朝ティーバッティングを再開である」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら