投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/9/6 05:03:06
最近忙しくてあまり巡回できていなかったので、久しぶりに回答。


> 「A」だったら「U+0041」のように表す。と覚えていたのですが、
そうですね。 Unicode スカラー値は U+10FFFF のように
接頭辞「U+」を付けた4〜6桁で表記されます。

この場合の Unicode は、「文字コード」ではなく「文字集合」の意味になります。
http://office-qa.com/win/win243.htm

たとえば UCS-4 の U+010000 の文字 “𐀀” (Linear B Syllable B008 A) は、
 UTF-8 ⇒ F0 90 80 80
 UTF-16BE ⇒ D8 00 DC 00
 UTF-16LE ⇒ 00 D8 00 DC
ですね。いずれも同じ文字ですが、符号化した時のバイナリ表現が異なります。


> Webなんかでは頭に「#」、末尾に「;」を付けて「#x0041;」のような表記があり、
具体的には、Web の『どこ』で使われていましたか?

たとえば HTML の場合、
    <p>𠮷野家</p>
のことを
    <p>&#x20BB7;野家';</p>
あるいは
    <p>&#134071;野家';</p>
と書けますし、C# であれば
    string A = "𠮷野家";
のことを
    string \u0041 = "\U00020BB7\x91CE\U5bb6";
あるいは
    string \u0041 = "\xd842\uDFB7\u91ce\U00005bb6";
などと書くことがあります。



> (2)又、前者(U+xxxx)は「コードポイント」と言うと思っているのですが、
言いますね。


> 後者(#xxxxx;)は何と呼べば良いのでしょうか?
x が 5 つですか? それとも、x の後に 4桁の 16進数ですか?
『どこ』で使われている表現なのか分からないと答えにくいです。

似ているのは HTML の文字参照ですが、この場合は頭に & が付くはずなのですよね。
https://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E5%8F%82%E7%85%A7

C# のエスケープ表現だと、「\u」 +4桁16進数 / 「\U」+8桁16進数 / 「\x」+1~4桁16進数でセミコロンは付きません。


> (3)コードポイントを一目見て、スカラー値が2バイト(&HFFFF)を超えているものは
> サロゲート文字と判断していいでしょうか?
エンコーディング次第なので、「文字コードによる」という答えになります。

UCS-4 の U+110000 以降の文字は、UTF-32 や UTF-16 や UTF-8 の文字コードでは表現できませんし、
U+10000 から U+10FFFF の範囲であっても、UTF-32 や UTF-8 ではサロゲートペアを使用しません。

UTF-16 では、UCS-4 にあって UCS-2 にない文字のうち、U+10000 から U+10FFFF の範囲をサロゲートペアとして表し、
ハイサロゲート(U+D800〜U+DBFF)とローサロゲート(U+DC00〜U+DFFF)の組み合わせで表現します。