ADの日記: "("はURI非予約文字なんですね
RFC2396 Uniform Resource Identifiers (URI)を調べてみたら、{ "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")" }の文字群は非予約文字らしい。やっぱり限りなく黒に近いグレーゾーンな予感的中。
なぜRFCなんぞを調べていたかというと、惰性で決めていた某プログラムのインライン処理系フォーマットを、少し考え直すべきかと思ったから。個人的経験ではURL文字列として "(" や ")" を使っている所を見た記憶が無いのだけど、自信が無かったので調べたという本音。
現在の処理系は (AnchorText(URI) という形式の文字列から <a href="URI">AnchorText</a> という書式へ変換するようになっている。一応、いくつか記述パターンがある。 例えば、 ( AnchorText ( 指示子 : URI , 属性 : STR )) とか。
また、現在のアンカー周りの処理系は、URLすら全角文字入力を認めているという変な仕様。これは、記述者がURL文字列に意図しないで全角文字を混ぜてしまった場合に、訂正の手間を省きたかったから。また、言語入力モードの切り替えを極力意識せずにするためでもある。だから、区切り符号自体も、全角半角のどちらでも入力可能な(全角文字と半角文字の見た目が大差ない)文字にしたいと思ってはいるのだが。
実体参照とされるべき文字はすべて変換される仕様につき、実体参照文字をアンカーの区切り符号としては使えない。というか、使いたくない。競合しないように処理するのは異様に面倒だと思う。う~む。入力が比較的楽で、プログラムコードっぽくならない区切り符号が……。
区切り符号としては、URIから排除される文字である "<" や ">" を使えば手っ取り早いと思う。しかし、それだと普通にHTMLのタグ打っているみたいで、「自然言語に近いフォーマットからHTMLを生成する」というコンセプトが薄くなるなぁと。
Google先生も "(" や ")" なんて使ってないから良いんだと、惰性に流されそうな今日この頃。
"("はURI非予約文字なんですね More ログイン