3月 112013
Ruby2.0はエンコーディングがUTF-8がデフォルトになっているので、バイト列に対して正規表現かけてデータを取り出すようなコードが動かなくなることがありますね
例えば 0xFF〜データ〜0x00 なバイナリに対して、データ部分を取り出す時こんな風にするけど
bytes =~ /\xff([^\x00]+)\x00/m
Ruby2.0では正規表現のエンコーディングをASCII-8BITにしておく必要ある。nをつける。
bytes =~ /\xff([^\x00]+)\x00/nm
0x80つまり128以上の時、ASCII-8BITの正規表現だよと宣言しておかないとinvalid multibyte escapeになる。
というようなpull requestをlibwebsocketに送ってmergeされた。
こんな風になってる。