コンピュータ(TIPS)

UTF-8をSJISに変換する方法を3つ紹介

最近のネットは、ほとんどUTF-8のエンコードで書かれているので、ダウンロードしてきたテキストファイル、html、ワードプレスからエクスポートしたデータなどはUTF-8なので、DOSで扱う時は、S-JISに変換が必要です。 そこで、今日は、3つの変換方法をご紹介します

VBSを使う方法

これは、一番使っている方法です。

UTFtoSJIS.vbs

Dim EucStream ‘ADODB.Stream
Dim SjisStream ‘ADODB.Stream
Dim Line,arg1,arg2

if WScript.Arguments.Count = 0 then
WScript.echo(“too few arguments.”)
WScript.Quit(-1)
end if

arg1 = WScript.Arguments(0)
arg2 = WScript.Arguments(1)

Set EucStream = CreateObject(“ADODB.Stream”)
EucStream.Charset = “utf-8”
‘EucStream.LineSeparator = 10
EucStream.Open

Set SjisStream = CreateObject(“ADODB.Stream”)
SjisStream.Charset = “SHIFT_JIS”
SjisStream.Open

EucStream.LoadFromFile(arg1)
Do Until EucStream.EOS
Line = EucStream.ReadText(-2)

‘Lineの処理

SjisStream.WriteText Line,1
Loop
SjisStream.SaveToFile arg2, 2
EucStream.Close
SjisStream.Close
Set EucStream = Nothing
Set SjisStream = Nothing

c:\UTFtoSJIS.vbs  UTF.txt SJIS.txt

これで、変換してくれますが、問題もあります。 null文字を含むテキストだと処理が止まってしまいます。

DOSコマンドだけで、のりきる。

DOSコマンドだけでも、やりきれます。

utf2sjis.bat

start /min /wait cmd /c chcp.com 65001 ^& ^( set /p x=””^< nul ^& cmd /u /c type utf.txt ^) ^>temp.txt
start /min /wait cmd /c chcp.com 932 ^& cmd /c type temp.txt ^>sjis.txt

コマンドはシンプルですが、文字化けもしやすい。

PowerShellで変換してしまう。

powershell.exe “get-content -Encoding UTF8 ‘utf.txt’ | Set-Content ‘sjis.txt'”

1行でいけるので、便利っちゃ便利。 最初の2つで、文字化けしたテキストも問題なかった。(当方の実績上の話)処理はかなり遅いとおもう。