読者です 読者をやめる 読者になる 読者になる

「すべての漢字を取り出す正規表現」の続き

id:toton:20051102 がはてなブックマークの「最近の人気エントリー」のトップに来ていたため、アクセスが結構あった様子。っちゅーわけでアフターケアとして少し検証してみます。

間違いがあったらヤなのでwww.unicode.orgのUnihan Radical-Stroke Index っちゅーunicodeデータベース検索で「一:U+4E00」と「龠:U+9FA0」の境界を調べてみた。
参考:id:toton:20050120

「一:U+4E00」のコード体系とフォント表示「龠:U+9FA0」のコード体系とフォント表示

一発で検索できて便利ですね。
ではU+9F00からU+9FFFまでのテーブルを参照しましょう。

9Fのテーブル内で「龠:U+9FA0」を探すのだからA0(最上段の右端)を見ると、U+9FA5まで漢字が存在する。こりゃいかんと思ったが「龠:U+9FA0」はJIS X 0208へのマッピングが存在し、次の文字 「U+9FA1」は JIS X 0208に対応していない。ただし、JIS X 0212のコードは存在している。試しにクリップボードで「U+9FA1」に相当する文字をコピーしてwindowsのエディタにペーストすると「?」になる。多分unicode->CP932とかのマッピングテーブルに存在しない文字なのだろう。「龠:U+9FA0」なら正常にコピペ可能。
CJKを扱っている場合はともかく一般的な日本語環境では、どうやら引用した記事で大抵の用途では正解のような気がする。
というか詳しい人正解を教えてクダサイ。

参考:

PC上で自分で文字列をhexdumpしてコードを確認している人はテーブルに探してる文字がない場合、上位ビットと下位ビットが反転していないか注意。

記事に間違いがある場合はコメントとかでご指摘ご教授をお願いします。