作者: davi
日時: 2005/8/17(07:23)
Bruce.さん  <  こん??は でび です

すんません。書き物していました。で、まだ終わらない。
締切過ぎちゃったので、一週間くらい遅れてもいいや、
って気分になりました。

On Sun, 07 Aug 2005 23:35:36 +0900
"Bruce." <kbk@...> wrote:

> ただUnicodeのブロックってたくさんあるじゃないですか、
> タミル語とか、それらすべてを網羅するの?
> という疑問です。はい。

弱気になって来ました。
SJIS、EUCモードの救済的な意味では原状でほとんど
いいのかな、という気も。

UTF8モード規準で考えると、例えば東京外大AA研
(sortfのmtoyoさんがいるところね)なんかだと、
すげーマイナーな言語を扱っていたりするし、
中高の英語のセンセだと発音記号(この辺のコード
ポイントって合成用文字があったような気も…)とか
使いたいだろうし。

UTF8モードではコードポイント範囲で指定すればいい話
なのかな?

Perlだとどんな風に実装されているんでしょうか。

------------------------------------

> > このような、非ASCII文字をASCIIで表現する方法がいくつか
> > ありますが、こういうのをデコードする(って言い方で良いの
> > かな?)\xに類似の機能も欲しい気がしています。
> 
> gawkなら関数という形で追加できそうな気がしますが、sedでと
> なるといい表現方法ありますか?

なんか適当なプレフィクス表現がないかなぁと
ボンヤリ考えていたのですがなかなか思い浮かびません。

新出さんのUNIX-like tools所収のTRだと

>「\」に続き1〜3桁の8進数
>その数をASCIIコードに持つ文字

とか、

>「\x」に続き1〜2桁の16進数
>その数をASCIIコードに持つ文字。UNIXにはこの記法はない。
>後述の -jオプションを指定している場合は16進4桁まで指定
>できるが、それが漢字コードとして正当な範囲内になければ
>ならない。

とかあります。

「検」の字をHTMLタグで表記した場合、10進表記が「&#26908;」、
16進表記が「&#x691c;」です。

つうことで、「\U」に続き4〜5桁の10進数、「\Ux」に続き4〜5桁
(サロゲート領域の記述には5桁必要)の16進数とかかな。

エンコード、デコードの指定はどうしましょ。

A デコード
s/\U26908/\UDEC/g   →  検
s/\Ux691C/\UDEC/g   →  検

B エンコード
s/検/\UENC/g        →  26908
s/検/\UxENC/g       →  691C

C エンコードその2
s/./\U4ENC/g         →  すべての文字を10進数4桁にエンコード
s/./\U5ENC/g         →  すべての文字を10進数5桁にエンコード

s/./\Ux4ENC/g        →  すべての文字を16進数4桁にエンコード
s/./\Ux5ENC/g        →  すべての文字を16進数5桁にエンコード

D デコードその2(?)
s/\U4/\UDEC/g        →  すべての数値を左から4桁分ずつ切って
                        10進数と見なしてUnicode文字に変換
                        4桁に満たない残余はそのまま保持。

s/\U5/\UDEC/g        →  すべての数値を左から5桁分ずつ切って
                        10進数と見なしてUnicode文字に変換
                        5桁に満たない残余はそのまま保持。

s/\Ux4/\UDEC/g      →  すべての数値を左から4桁分ずつ切って
                        16進数と見なしてUnicode文字に変換
                        4桁に満たない残余はそのまま保持。

s/\Ux5/\UDEC/g      →  すべての数値を左から5桁分ずつ切って
                        16進数と見なしてUnicode文字に変換
                        5桁に満たない残余はそのまま保持。

Dがなんか汚いし、遅そう。
もう少しエレガントな表記法って、ありそうでしょうか。

ソースの前後にかならず開始文字「&#」や「&#x」と、
終了文字「;」などを指定しないと動作しないようにするとか?

でも、その場合、開始文字や終了文字はユーザ指定できるように
なっていて欲しい気もします。

でび  http://homepage1.nifty.com/davi/