■
世の中いろんな人がいるもんだ。一度も貢献した事のないプロジェクトのMLに、project managerになってやる、別のプロジェクトの一部として発展させよう、とか言い出す奴とか。すげーな。
まあmcのことなんだけどね。
ウソも繰り返し唱え続ければ…
どのバージョンなんだー
CompareInfo.Compare()で無視される文字は、既に洗い出し終えたのだけど、そもそも一体これらは何なのかを調べている。が、何となく分かってきた気がする。とりあえず.NETで使われているUnicodeのバージョンは:
- UnicodeEncoding: MSDNによるとUnicode 2.0
- UnicodeCategory: MSDNによるとUnicode 3.1
- CompareInfo.Compare(): たぶんUnicode 1.0 1
で、おそらくCompareInfo.Compare()で無視される文字というのは、単純にUnicodeCategoryで言えばFormatとOtherNotAssignedの2種類だけなのだろう、と推測している。Char.GetUnicodeCategory()で返ってくる値とあまりにも違うのは、それだけ古いマッピングをLCMapStringがもっているということだ。実際
| 0x01F6 <= i && i <= 0x01F9 | |
| 0x0218 <= i && i <= 0x0233 | |
| 0x02A9 <= i && i <= 0x02AD | |
| 0x02EA <= i && i <= 0x02EE | |
| 0x0349 <= i && i <= 0x036F | |
| 0x0488 <= i && i <= 0x048F |
(コードの抜粋なので変なのはしょうがないとして)この範囲に含まれる文字は完全に無視されるのだけど(UnicodeCategoryはバラバラ)、この範囲の文字はUnicode 1.1以降3.1までで追加された文字であるようだ2。
おそらくIgnoreNonSpaceはNonSpacingMarkに、IgnoreSymbolsはXXXSymbolに、それぞれ(Unicode 1.0のマッピングに基づいて)対応していたのだろう。
じゃあ実際にはどうやって無視される文字・無視されない文字を識別すればいいのか? 知りません。Unicode Character Databaseと格闘すれば良いんじゃないか、っていう気もするけど、根性で頑張ってねとしか言いようがない。
コメント
謎工 — 06/07/2005 17:19:15
ACCSと言う団体にまともな統計数値を弾き出す能力が無いことは5年前にソニー独禁法違反事件審判で「(物証として提出した)このデータは会員企業各社が申告した数値を並べただけだ」と開き直っていた時から承知していましたけれど、こうして改善どころかエスカレートする様を見せ付けられると、もう!
atsushieno — 06/07/2005 18:07:12
SBの会計と同じで、一番都合の良さそうな方式を選んでやっているのだろうなあ、と思えてきますね。どちらも専門家(?)の人に簡単に見破られてしまうのがお粗末ですが…