@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

サロゲートペア文字や結合文字を文字コードから出力するにはどうすればよいのでしょうか

1
投稿者投稿内容
なおこ
会議室デビュー日: 2007/09/21
投稿数: 10
投稿日時: 2007-09-27 13:37
こんにちは。
最近、文字関連で悩みっぱなしの初心者です。
ChrW関数でユニコード文字は出力できるのですが、
サロゲートペアや結合文字を、文字コード(U+30ACなど)から出力するには、どうすればよいのでしょうか。
また、文字列から、その文字がサロゲートペアであることは判別できるのですが、結合文字はどのように判別するのでしょうか。

よろしくお願いします。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-09-28 01:08
引用:

なおこさんの書き込み (2007-09-27 13:37) より:
最近、文字関連で悩みっぱなしの初心者です。



それはたぶん誰でも悩むと思います。
文字関連で何を聞いても正しく答えられるという人は見たことないですね。

引用:

ChrW関数でユニコード文字は出力できるのですが、
サロゲートペアや結合文字を、文字コード(U+30ACなど)から出力するには、どうすればよいのでしょうか。



#U+30ACって、「ガ」なので、サロゲでも結合文字でもないような。

結合文字はそのままです。

サロゲートペアは10ビットずつだったと思うので、
ChrW(&HD800 Or ((U And &HFFFF)>>10)) & ChrW(&HDC00 Or (U And &H3FF))
こんなのでいけるのでは?
試してないけど。

引用:

また、文字列から、その文字がサロゲートペアであることは判別できるのですが、結合文字はどのように判別するのでしょうか。



過去の私のソースをみると、
正規表現で「\p{Mn}」などとしてるようですが、
100%うまくいく訳ではないと思います。
Unicode自体どんどん変わってますし。

文字の問題に関しては、
できる人にはノウハウがたくさんあるんでしょうが、
私はかなりあきらめてます。

正規表現とStringInfoの二つで何とかして、
できない分は問題が発覚した際に個別に対応してます。
1

スキルアップ/キャリアアップ(JOB@IT)