Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
文字コード
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30643#CommentId84680
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
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>𠮷野家';</p>
あるいは
<p>𠮷野家';</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)の組み合わせで表現します。