VB.NETでUTF-16(Big-Endian)からShift_JISへの変換[プログラミング]
(2010-10-05 00:22:24) by shinoda


現在作成中の 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 で行われているので、うまくいって当たり前だわな。


コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8