Open3
文字エンコーディングについて

経緯
Verse言語リファレンスの文字エンコーディングの内容がわからないので 使ってみよう。
1. 文字「a」,「1」の16進数、10進数、8進数を調べる
文字「1」の場合、 16進数(0x31) - 10進数(49) - 8進数(061)
2. 16進数、10進数、8進数を使ってプログラムを書いてみる
character_encoding_sample
using { /Fortnite.com/Devices }
character_encoding_sample := class(creative_device):
OnBegin<override>():void=
#文字「a」: 16進数(0x61) - 10進数(97) - 8進数(141)
#UTF-8(61)
Alphabet_1:char = 'a' #出力結果: "a" ……(a)
Alphabet_2:char = 0o61 #出力結果: "a" ……(b)
Alphabet_3:int = 0x61 #出力結果: "97" ……(c)
Alphabet_4:int = 0141 #出力結果: "97" ……(d)
Alphabet_5:string = "{0x61}" #出力結果: "97" ……(e) ToString(Val:int)
Alphabet_6:string = "{97}" #出力結果: "97" ……(f) ToString(Val:int)
Alphabet_7:string = "{0o61}" #出力結果: "a" ……(g) ToString(Character:char)
Alphabet_8:string = "{0141}" #出力結果: "97" ……(h) ToString(Val:int)
#文字「1」: 16進数(0x31) - 10進数(49) - 8進数(061)
#UTF-8(31)
Number_1:char = '1' #出力結果: "1" ……(a)
Number_2:char = 0o31 #出力結果: "1" ……(b)
Number_3:int = 0x31 #出力結果: "49" ……(c)
Number_4:int = 0061 #出力結果: "49" ……(d)
Number_5:string = "{0x31}" #出力結果: "49" ……(e) ToString(Val:int)
Number_6:string = "{49}" #出力結果: "49" ……(f) ToString(Val:int)
Number_7:string = "{0o31}" #出力結果: "1" ……(g) ToString(Character:char)
Number_8:string = "{0061}" #出力結果: "49" ……(h) ToString(Val:int)
[Output Log]
[2024.09.04-02.27.29:343][782]LogVerse: : Alphabet: 1=a, 2=a, 3=97, 4=97, 5=97, 6=97, 7=a, 8=97
[2024.09.04-02.27.29:343][782]LogVerse: : Number: 1=1, 2=1, 3=49, 4=49, 5=49, 6=49, 7=1, 8=49
3. 考察
# 1文字をシングルクォーテーションで囲ってchar型に代入可能(※1)。表示する値は文字 (a)
# 1文字の10進数をstring型で扱う場合、表示する値は10進数になる (f)
# 1文字の16進数(0xXX)はint型に代入可能。表示する値は10進数になる (c, e)
# 1文字の16進数の先頭0xを0oに変更するとchar型に代入可能(※2)。表示する値は文字 (b, g)
# 1文字の8進数はint型に代入可能。表示する値は10進数になる (d, h)
# ※1 構文エラーとなる場合もある。(例)'a'の代入はOKだが、'あ'の代入は構文エラー。
# ※2 char型の対応形式は0oXX。
16進数をもとに対応する1文字を表示したり、8進数をもとに対応する10進数の値を表示できそう。

#文字「あ」: UTF-8(e38182)
# https://www.seiai.ed.jp/sys/text/java/utf8table.html
Kana_1:char32 = 'あ' #出力結果: ※char32はToStringがないため、Print不可
Kana_2:char32 = 0u38182 #出力結果: ※char32はToStringがないなめ、Print不可
Kana_3:int = 0xe38182 #出力結果: "14909826"
Kana_4:string = "{0xe38182}" #出力結果: "14909826" ToString(Val:int)
#文字「🐈」: #Unicode(1f408)
# https://www.emojiall.com/ja
Emoji_1:char32 = '🐈' #出力結果: ※char32はToStringがないため、Print不可
Emoji_2:char32 = 0u1f408 #出力結果: ※char32はToStringがないなめ、Print不可
Emoji_3:int = 0x1f408 #出力結果: "128008"
Emoji_4:string = "{0x1f408}" #出力結果: "128008" ToString(Val:int)
Print("Kana: 3={Kana_3}, 4={Kana_4}")
Print("Emoji: 3={Emoji_3}, 5={Emoji_4}")
[Output Log]
LogVerse: : Kana: 3=14909826, 4=14909826
LogVerse: : Emoji: 3=128008, 5=128008

- 平仮名、カタカナなど
- 絵文字