Windowsで 1.9.1 と Racc とスクリプトエンコーディング

そういうわけで Windows(XP SP3)で Ruby-1.9.1 で Racc(1.4.6)、文法ファイルの日本語エンコーディングどうしよう。なんというか、SVNキーワード $Date$ の曜日だけなんだけどね、UTF-8N。
と、エラー。

<どこか>\esoteric>racc Hhyy.y
C:/PROGRA~1/RUBY-1~1.1/lib/ruby/gems/1.9.1/gems/racc-1.4.6/bin/racc:143:in `read
': "\x9F" followed by "," on Windows-31J (Encoding::InvalidByteSequenceError)
        from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/gems/1.9.1/gems/racc-1.4.6/bin/racc
:143:in `block in main'
        from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/gems/1.9.1/gems/racc-1.4.6/bin/racc
:277:in `section'
        from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/gems/1.9.1/gems/racc-1.4.6/bin/racc
:141:in `main'
        from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/gems/1.9.1/gems/racc-1.4.6/bin/racc
:308:in `<top (required)>'
        from C:/Program Files/Ruby-1.9.1/bin/racc:19:in `load'
        from C:/Program Files/Ruby-1.9.1/bin/racc:19:in `<main>'

rubyコマンドラインオプション「-Ku」付ければ何とかなるんだけど

<どこか>\esoteric>ruby -Ku "C:\Program Files\Ruby-1.9.1\bin\racc" Hhyy.y

<どこか>\esoteric>

というわけで、1.9.1\bin の racc.bat をちょっと調整。コマンドライン第一引数に -K オプションを設定できるようにした、第一オプション限定。

@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
@"ruby.exe"" "C:/Program Files/Ruby-1.9.1/bin/racc" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
:WinNT
if "%1" GEQ "-K" (
  @"ruby.exe" %1 "%~dpn0" %2 %3 %4 %5 %6 %7 %8 %9
) else (
  @"ruby.exe" "%~dpn0" %*
)

WinNT側のみ。SHIFT がバッチパラメータ「%*」に影響しないのでちょっと無様。

<どこか>\esoteric>racc -Ku Hhyy.y

<どこか>\esoteric>