[#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

[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

In This Thread

Prev Next