近所のJavaの人たちが「JISコードをJavaでエンコーディングを指定しても読み込ませることができない」みたいなことを嘆いていました。どうも聞いたらSHIFT-JISをエンコーディングに指定していたようだったのですが…。エディタの自動判定機能でSHIFT-JISと判定されていたからとのこと。あーいわゆる半角カナのエリアが出てきたらSHIFT-JISと判定されても仕方ないか。
でも、ちょっと気になったので.NET Frameworkで使えるのか?と思って実験。
- 秀丸で「これは半角カナです。」という一文を書いて、JISを指定して保存。
- PowerShellでこんなの書いた。変数名はまぁ御愛嬌で…。
$a = "C:\test\JIS.txt"
$aa = "C:\test\unicode.txt"
$encode = [System.Text.Encoding]::getencoding("iso-2022-jp")
$b = new-object system.io.streamreader $a, $encode
$c = new-object system.io.streamwriter $aa, $false
$d = $b.readline()
$c.writeline($d)
$b.close()
$c.close()例外も発生せず、見事に変換した。なるほど…。