[#49476] UTF-8 のスクリプト中で CP932 の正規表現オブジェクトが作りたい — "5.5" <5.5@...>
5.5 です。
4 messages
2013/07/01
[#49480] [ANN] Milkode 1.1 — ongaeshi <ongaeshi0621@...>
おんがえし です。
13 messages
2013/07/02
[#49508] OSXでRUBY-TKインストール出来た方いますか? — Tsuyoshi Uema <mugenkai_151e@...>
7.8年ぶりの書き込みです。
12 messages
2013/07/29
[#49509] Re: OSXでRUBY-TKインストール出来た方いますか?
— anfojp <anfojp@...>
2013/07/29
=1B$B$3$s$P$s$O!#=1B(B
[#49510] Re: OSXでRUBY-TKインストール出来た方いますか?
— Tsuyoshi Uema <mugenkai_151e@...>
2013/07/29
テツさん、ありがとうございます。
[#49511] Re: OSXでRUBY-TKインストール出来た方いますか?
— Tetsuya YUASA <tetsuya@...>
2013/07/31
こんにちは。
[#49513] Re: OSXでRUBY-TKインストール出来た方いますか?
— mugenkai_151e@...
2013/07/31
[ruby-list:49476] UTF-8 のスクリプト中で CP932 の正規表現オブジェクトが作りたい
From:
"5.5" <5.5@...>
Date:
2013-07-01 06:48:43 UTC
List:
ruby-list #49476
5.5 です。
スクリプトのエンコーディングが UTF-8 のときに,CP932(Windows-31J)
の正規表現オブジェクトを作るにはどうすればいいのでしょうか?
うまくいくのは,
s="[ぁ-ん]+".encode("cp932")
r=/#{s}/
のような場合です。s が CP932 の文字列であるため,r もそうなります。
しかし,このメールの末尾に示す検証コードのような場合にはうまくいき
ません。
つまり,\p{Katakana} のようなものを含む正規表現のエンコーディング
は,スクリプトのエンコーディングに従うようなのです。
String と違って Regexp には encode メソッドのようなものがありませ
んので,作ってからエンコーディングを変換することもできません。
Regexp.#new の引数でエンコーディングを指定することもできません。
# encoding: utf-8
r=/\p{Katakana}/
p r.encoding # => #<Encoding:UTF-8>
s="ルビーの指輪".encode("cp932")
p s.scan(r)
# => incompatible encoding regexp match
# (UTF-8 regexp with Windows-31J string)
# (Encoding::CompatibilityError)
--
5.5@moji.gr.jp