• 締切済み

ASCII文字のエンティティネームが知りたい

HTML実体参照文字について。いわゆる半角英数文字であるASCIIコードでの - (ハイフン/マイナス) と ~ (チルダ) の実体参照記述式の時の表記名:エンティティネームが知りたいです。"&" の様な数値参照記述式では無く "&" の様に書く「実体参照記述式」について知りたいです。 自分であらたか調べましたが、この2つだけがどうしても分かりません。最初から未定義なのかとも思いましたが、半角空白を除く &#33~255; までの全てのASCIIコードに漏れ無くエンティティネームが割り振られており、通常文字列内にも頻出の + * = ? ~等と言った記号類には全て数値参照以外にも実体参照のための名前(エンティティネーム)が設定されており、実際にブラウザ上での表示も完全に同じ様になります。 >参考リンク - http://www.theasciicode.com.ar/ W3Cの公式ドキュメントも読みましたが、全ての文字を網羅しておらず、かなり抜けがありました。 >参考リンク - https://www.w3.org/TR/html5/syntax.html#named-character-references また海外の記事や技術系質問サイト(stackoverflow.com)でも良く分からない、或いは間違った回答を教えており参考になりませんでした("‐" とか "‐" とかの回答ばかり)。 HTML実体参照はWC3によって制定され、各種ブラウザ開発メーカ等に公開情報として発信されてるはずだと思うのですが、何処を探しても &#00~65999; までを完全網羅した一覧表が見当たりません。無いはずは無いと思うんですが…まさかメーカ各位で勝手にエンティティネームを割り振る訳では無いはずなので、必ずやこの世界の何処かには完全版一覧表が存在するはずなのですが、もしかしてこれは国家機密に属するモノなのでしょうか? P.S. >10進16進文字コード変換 - http://code.cside.com/3rdpage/jp/unicode/converter.html ---- 表示例 ---- ・ - : &???; - - ・ ‐ : ‐ ‐ ‐ ・ - : − − − ・ ~ : &???; ~ ~ ・ ˜ : ˜ ˜ ˜ ・ ∼ : ∼ ∼ ∼ ほぼ例外無く全てのサイトで「 ~ : ˜ ~ 」と解説記述されていますが、これは間違っており大嘘です。 実際に適当なHTMLを自作して ˜ と ~ で文字を表示させ、それぞれを上記変換サイトで確認すると、~ の時は正しく半角英数文字の ~ が出力されていますが、実体参照表記の ˜ で出力させた時の文字は見た目こそ非常に似通っており同じモノに見えますが、変換サイトや適当なPHPコード等を通して文字番地を確認すると ˜(x02DC)だと言う事が確認出来ます。つまり半角英数文字の ~ では無い別の文字。 またかなり古いログの中に、ASCII半角空白の実体参照表記が &sp; だと記述されたものを見ましたが。実際にHTML上で再現したところ実体参照として認識しませんでした。気になります。

  • 4017B
  • お礼率100% (23/23)
  • HTML
  • 回答数2
  • ありがとう数2

みんなの回答

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.2

>HTML実体参照文字について。いわゆる半角英数文字である >ASCIIコードでの - (ハイフン/マイナス) と ~ (チルダ) の >実体参照記述式の時の表記名:エンティティネームが知りたいです。 という部分だけに直接答えるなら、「無い」が回答になります。 そもそもASCIIコードは制御文字も含めて7ビット、つまり128文字の範囲で表現しようとした1960年代に確立した規格なので無理があるのです。 で、ハイフンとマイナスは本来は異なる意味の異なる文字なので表示し分けるべきですが、文字数を減らさなければならないので似てるから1つのコードに割り当ててしまったという経緯があります。なので、「-」は、ハイフンなのかマイナスなのか区別のつかないあいまいな文字、ということになります。 で、ここからは個人的な推測になりますが、文字実体参照の規格を制定する際に、「ハイフン」と「マイナス」は必要性が認められそれらを個別明確に表す文字をそれぞれ割り当て、「ハイフンとマイナスの区別がつかない文字」なんてものをわざわざ指定したい人なんていないだろうという話になり捨てられたのだと思います。 そもそもASCIIコードで「ハイフンとマイナスの区別がつかない文字」があったにもかかわらず、「ハイフン」と「マイナス」を区別したかっためにUnicodeで新たに「ハイフン」と「マイナス」を割り当てたのですから、新たに追加した文字だけで十分だろうという話になったのだとしても特段不思議なことではないと思います。 チルダも同様だと思います。チルダは、オーバースコアや波ダッシュであるかのように表示するフォントがあり、「チルダ」とはなっているものの扱いがあいまいでした。それが明確になった文字のみを指し示すようにしたのでしょう。 ただ、そもそも何のために知りたかったのですか?

4017B
質問者

お礼

そうですか…。とりあえず自身で納得がいくまで独自研究を続けます。

回答No.1

一応紹介してくれた HTML5仕様書 https://www.w3.org/TR/html5/syntax.html#named-character-references の一番下にThis data is also available as a JSON file.というのがあって、このファイルには確かに、HTML4にはなかった$等がちゃんと乗っており、質問者の言うとおり、˜はU+02DC SMALL TILDEである。(この点、www.theasciicode.com.arは正しくないとみられる) #「JSON側にはあるが、表に載っていないものを使っていいものとしていいのか」は自分にも自信がない。 ただし、 「半角空白を除く &#33~255; までの全てのASCIIコードに漏れ無くエンティティネームが割り振られており」という部分には同意できない。先のJSONファイルに126番のものはなく、www.theasciicode.com.arでも出てこない。

4017B
質問者

お礼

関連するQ&A

  • バッチファイル内に含まれる全角文字を,エンコードしてすべて半角文字で記

    バッチファイル内に含まれる全角文字を,エンコードしてすべて半角文字で記述する事はできないでしょうか。漢字等を,依存文字を含まないASCII文字であらわしたいのです。HTMLでいうHTMLエンティティのように……。 ただしエンコードされた文字列をコマンドでデコードするというような面倒な処理過程があっても結構です。

  • CGI.pmでHTMLのネームエンティティを出せるか

    CGI.pmでHTMLのネームエンティティを出力できるのでしょうか。 例えばescapeHTML()は'<'や'>'を'&lt;'や'&gt;'へ変換してくれますが、 半角スペースは'&nbsp;'へ変換してくれません。 半角スペースを使いたい場合、print('&nbsp;');のように書くしかないのでしょうか。 それともCGI.pmで何か専用の関数が用意されているのでしょうか。

    • ベストアンサー
    • Perl
  • ASCII文字列以外を検出する正規表現

    ASCII文字列(半角英数・記号)以外を検出する正規表現を教えてください。 WEBで検索したのですが探し方が悪いのか見つかりませんでした。

  • Movable Type 4で特殊な文字をHTMLエンティティ化して保存したい

    こんにちわ。 Movable Type 4で、ブログ投稿時に特殊文字参照文字列のまま保存したいです。 HTMLのページの文字コードはUTF-8で、 データベースは、MySQLのバージョン5を利用していて、デフォルト文字設定は、 UTF-8にしているのですが、(1)(丸でかこまれた数字1)などの文字を投稿すると、 「?」ハテナになって、記事に表示されてしまいます。 ですので、「&#9312;」のようにHTMLエンティティ化して入力しようと思ったのですが、 今度は、「&amp;9312;」になってしまって、思うように実現できませんでした。 WYSIWYGモードでない、ところで「&#9312;」を入力すれば、(1)になったのですが、 WYSIWYGモードに切り替えてしまうと、その時点で変換されてしまうので、 次に編集して登録するときには、また「?」に文字化けしてしまいました。 ですので、データベースに保存するさいに、(1)などの文字を「&#9312;」 のようにHTMLエンティティ化して登録したいと考えています。 このようなことは可能なのでしょうか? お分かりの方いらっしゃいましたら、ご教示いただけますと幸いです。 宜しくお願いいたします。

  • UTF-8とASCIIコードにおける互換性について

    UTF-8とASCIIはそのASCIIコードの範囲のおいて 互換性を持ちます。(と、書籍や多種な文献にはそういった記述があります) たとえば【A】という文字をUTF-8で符号化した際は【41】(16進数で) さらにASCIIコードでも【41】という値がAという文字に割り当てられています。 確かに、一件互換しているようにみえますが、UTF-8っていうことは最終的には Unicode上のコードポイントの値・・・つまり0x0041という値に復元?(というのでしょうか)するわけですよね? でそのUnicodeの文字集合上から復元したコードポイントに対応する文字を参照しAという文字をみつけてくると・・・。 これって【A】という文字をUTF-8で符号化した歳のバイト列はASCIIと一致しているけれど 結局Unicodeコードポイントに直した場合【00】という上位バイトが無駄にくっついてきて【0x0041】となり 互換性がなくなるのではとおもったのですが・・・。 これはどういう意味の互換性なのでしょうか? 識者の方ご教授ください。 お願い致します。

  • pythonで実体参照文字を直す方法

    pythonで以下のコードを使って実体参照、文字参照を直しているのですが「~」 など特定の文字がうまく直されませんどういうことでしょうか? python2.7です。 下のコードで4&#xFF5E;6&#x4EBA;を直すと46人になる。 文字参照とか実体参照とかhtmlentitydefsの使い方も詳しく分かってません。 その辺も総合して教えていただけるとありがたいです。 def sansyounaosi(text): # 正規表現のコンパイル reference_regex = re.compile(u'&(#x?[0-9a-f]+|[a-z]+);', re.IGNORECASE) num16_regex = re.compile(u'#x\d+', re.IGNORECASE) num10_regex = re.compile(u'#\d+', re.IGNORECASE) result = u'' g = 0 while True: # 実体参照 or 文字参照を見つける match = reference_regex.search(text, g) if match is None: result += text[g:] break result += text[g:match.start()] g = match.end() name = match.group(1) # 実体参照 if name in htmlentitydefs.name2codepoint.keys(): result += unichr(htmlentitydefs.name2codepoint[name]) # 文字参照 elif num16_regex.match(name): # 16進数 result += unichr(int(u'0'+name[1:], 16)) elif num10_regex.match(name): # 10進数 result += unichr(int(name[1:])) return result

  • BATファイル

    BATファイル  バッチコマンド内に含まれる全角文字を,符号化して半角文字で記述する事はできないでしょうか。HTMLでいうHTMLエンティティのように……。

  • (急)コードネーム専門家方々!教えてください!

    (急)コードネーム専門家方々!これらのコードネーム問題教えてください ! 1.(構成音はroot 音から順番に記述)空所のコードネームの構成音を教えてください! (1) E E-[ ]-B (2)Ab Ab-C-[ ] (3)D7 D-F#-A-[ ] (4)Db7 Db-F-Ab-[ ] (5)F#m F#-A-[ ] 2.下のコード連結で、ドミナントモーションになるようなコードネームを記述してください! (1)G7 → [ ] (2) [ ] → Ab (3)[ ] →Dm (4)[ ] → E7 (5)[ ] → Bbm 記入は、すべて英数半角でお願いします! 今日まで早く必要です!

  • 文字参照「#」を含むURI 正しくない?

    アンカータグなどでCGIへのリンクを指定するとき、 xxx.cgi?param1=aaa&param2=bbb などというURIの場合、そのままHTML内に書くと「&」記号が文法エラーになるので、「&amp;」などに置き換えますよね。 これを、汎用的なモジュールや適当なサブルーチンを使って、記号などを一括で「&#38;」のような文字参照に置き換えています。 ところが、 xxx.cgi?param1=aaa&param2=bbb#name のように(パラメーターではなく)アンカー名が入っていると「#」記号が「&#35;」に置き換えられるのですが、Another HTML-lint でチェックしてみると、この部分が正しくないと警告されてしまいます。 -------------- <A> の HREF 属性の URI 中の実体参照 `&#35;` は使用できない文字 `#` です。 -------------- 単純に、実体参照はデコードしてから評価し、#記号はURIとして認められるように思うのですが、違うのでしょうか。 「#記号はURIとして認められる」という私の認識自体は間違っていないと思うのですが、なぜ実体参照にするとNGなのでしょう。「実体参照はデコードしてから評価」という認識が、間違っていますか? どなたか、ご教授お願いいたします。 (※ 文中の「&」記号が、ここに投稿するとなぜか化けるので全角にしてあります)

    • ベストアンサー
    • HTML
  • 文字の変換

    WINDOWS7を使っています。 私は、文字の入力はカナ入力に設定しています。 TABキーを押すと、英数字の半角とひらがなのモードに切り替わるのですが 以前は、半角英数ではなくて全角英数に切り替わっていたはずなんですけど 今は、TABキー押すと、半角英数に切り替わってしまいます。 全角英数に切り替わるように設定する方法はありますか?

専門家に質問してみよう