- 作成者投稿
- 2017年11月15日 10:07 am #24273redakt55参加者
基本多言語面(BMP: Basic Multilingual Plane)外の文字(U+10000~)の検索に関して,Boost.Regex と Onigmo それぞれおかしな点を発見しました。
◎Boost.Regex
基本多言語面外の文字が 1 文字と扱われません。再現手順:
[1] 「𩸽がうまい
」と打つ。𩸽(ほっけ)は U+29E3D で基本多言語面外。
[2] 検索パターンを(.)
とする
[3] 置換文字列を<\1>
とする
[4] 全置換正しくは
<𩸽><が><う><ま><い>
となるはずだが,<�><�><が><う><ま><い>
となる。
Onigmo は正しく置換します。◎Onigmo
検索で基本多言語面外の文字が見出されたあとの「次を検索」の動作がおかしい。再現手順
[1] 「𩸽がうまい
」と打つ。
[2] 検索パターンを.
とする
[3] 検索する
→この時点で,正しく「𩸽
」が選択状態になります。この状態で何か文字を打つと,正しく「𩸽
」がその文字に替わります。ここまでは正常。
[4] この状態で Shift+F3 などにより「次を検索」する
すると,「𩸽
」の文字のところが,あたかも二つのスペースのように表示され,その二つめのほうが選択状態になります。(「𩸽」という文字は見えなくなります)。
low surrogate が選択状態になったような感じですね。
この状態で例えば「a
」と打つと,「𩸽
」だったところが U+D867+a
になります。2017年11月17日 11:22 am #24278Yutaka Emuraキーマスターredakt55 様
いつもお世話になっております。江村です。
Onigmo については、こちらでは修正しました。次のバージョンが公開されたらお試しください。
Boost.Regex については、もう少し調べさせてください。
よろしくお願い申し上げます。
- 作成者投稿
- このトピックに返信するにはログインしてください。