Ruby 1.9 系列のエンコーディングについて質問します.

以下のようなスクリプトで全角ダッシュ"−"をエンコードしようとすると,
エラーではねられます.

ちなみに環境は Windows-XP SP3, Ruby 1.9.1 p243 (i386-mswin32)です.

# -*- coding: Shift_JIS -*-
#
p "ー".encode("Windows-31J")  #=> "ー"
p "ソ".encode("Windows-31J")  #=> "ソ"
p "−".encode("Windows-31J")  #=>Encoding::UndefinedConversionError

エラーメッセージの中に
 "\xE2\x88\x92" from UTF-8 to Windows-31J in conversion from Shift_JIS
to Windows-31J
というメッセージが含まれています.

Shift_JIS の 5c というコードが悪さをしているのでしょうか?
そもそも,Shift_JIS と Windows-31J がどう違うのか,よくわかっていません.

ちなみに,上記スクリプトの magic comment で Windows-31J を指定するとこのエラーは起きません.

ご教示いただければ幸いです.

-- 
俊(とし)
* 望湖庵日記 http://griffin.cocolog-nifty.com/lakesidedairy/