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された。
こんな風になってる。
![](http://shokai.org/archive/file/e6230b3f5be021ec6498c9ff1fcf6bd1.png)