近所の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()
例外も発生せず、見事に変換した。なるほど…。