- - PR -
サロゲートペア文字や結合文字を文字コードから出力するにはどうすればよいのでしょうか
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-09-27 13:37
こんにちは。
最近、文字関連で悩みっぱなしの初心者です。 ChrW関数でユニコード文字は出力できるのですが、 サロゲートペアや結合文字を、文字コード(U+30ACなど)から出力するには、どうすればよいのでしょうか。 また、文字列から、その文字がサロゲートペアであることは判別できるのですが、結合文字はどのように判別するのでしょうか。 よろしくお願いします。 | ||||||||||||
|
投稿日時: 2007-09-28 01:08
それはたぶん誰でも悩むと思います。 文字関連で何を聞いても正しく答えられるという人は見たことないですね。
#U+30ACって、「ガ」なので、サロゲでも結合文字でもないような。 結合文字はそのままです。 サロゲートペアは10ビットずつだったと思うので、 ChrW(&HD800 Or ((U And &HFFFF)>>10)) & ChrW(&HDC00 Or (U And &H3FF)) こんなのでいけるのでは? 試してないけど。
過去の私のソースをみると、 正規表現で「\p{Mn}」などとしてるようですが、 100%うまくいく訳ではないと思います。 Unicode自体どんどん変わってますし。 文字の問題に関しては、 できる人にはノウハウがたくさんあるんでしょうが、 私はかなりあきらめてます。 正規表現とStringInfoの二つで何とかして、 できない分は問題が発覚した際に個別に対応してます。 |
1