cygwin ruby1.9.3 と win32-clipboard-0.5.2

cygwin Ruby1.9.3 環境に win32-clipboard を gem install してみたんだが
日本語の出し入れができなくなってる。

で、とりあえず動作する様にしてみる。

/usr/lib/ruby/gems/1.9.1/gems/win32-clipboard-0.5.2/lib/win32/clipboard.rb

--- clipboard.rb.org    2012-12-21 19:59:31.288117400 +0900
+++ clipboard.rb        2012-12-21 23:46:27.373912900 +0900
@@ -70,7 +70,7 @@
          # NULL terminate text
          case format
             when TEXT, OEMTEXT, UNICODETEXT
-               clip_data << "\0"
+               clip_data.force_encoding('ASCII-8BIT') << "\0"
          end

          # Global Allocate a movable piece of memory.
@@ -120,7 +120,11 @@
                   when TEXT, OEMTEXT, UNICODETEXT
                      clip_data = 0.chr * GlobalSize(handle)
                      memcpy(clip_data, handle, clip_data.size)
-                     clip_data = clip_data[ /^[^\0]*/ ]
+                     if format == UNICODETEXT
+                       clip_data.force_encoding('UTF-16LE')
+                     else
+                       clip_data.force_encoding('Windows-31J').sub!(/\0.*/,'')
+                     end
                   when HDROP
                      clip_data = get_file_list(handle)
                   when ENHMETAFILE

自分の日本語環境でさえ動きゃいいや、という超適当な修正。
アラビア文字とハングルで試してみたけど、一応コピペできてる。

#!/usr/bin/ruby -Ku
# coding: utf-8
require 'win32/clipboard'
include Win32
h = {'korean'=>"(ハングル)".encode('UTF-16LE'), 'arabian'=>'(アラビア文字)'.encode('UTF-16LE')}
Clipboard.set_data(h[ARGV.shift], Clipboard::UNICODETEXT)
puts Clipboard.data(Clipboard::UNICODETEXT)

Windowsの言語環境情報から Rubyエンコーディングラベル('Windows-31J'とか)を簡単に生成できないのかな。