亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go 符文文字為高位表情符號

Go 符文文字為高位表情符號

Go
慕容708150 2022-08-15 10:24:25
我們如何使用帶有符文文字的表情符號,該字面量超出了我認為的代碼點U + 265F?a1 := '\u2665'這有效a2 := '\u1F3A8'這給出了錯誤無效的字符文本,更多的是一個字符。有沒有辦法將位置較高的表情符號表示為符文文字?https://unicode.org/emoji/charts/full-emoji-list.html
查看完整描述

1 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

您可以使用序列后跟 8 個十六進制數字,這是 Unicode 碼位的十六進制表示形式。這在 Spec: Rune literals 中有詳細說明:\U


有四種方法可以將整數值表示為數字常量:后跟兩個十六進制數字; 后跟正好四個十六進制數字; 后跟正好八個十六進制數字,以及一個普通的反斜杠,后面正好跟著三個八進制數字。在每種情況下,文本的值都是由相應基數中的數字表示的值。\x\u\U\


例如:


a1 := '\u2665'

fmt.Printf("%c\n", a1)


a2 := '\U0001F3A8'

fmt.Printf("%c\n", a2)

哪些輸出(在Go Playground上嘗試):


?

??

注(對@torek的答復):


我相信Go的作者選擇要求正好4和8個十六進制數字,因為這允許在解釋的字符串文本中使用完全相同的形式,完全相同的符文文字。例如,如果你想要一個包含2個符文的字符串,一個有代碼點,另一個有符文,它可能看起來像這樣:0x0001F3A84


s := "\U0001F3A84"

如果規范不需要正好 8 個十六進制數字,那么最后一個是碼位的一部分還是字符串的單個符文都是模棱兩可的,因此您必須將 斷開為類似 .'4'string"\U1F3A8" + "4"


規范: 字符串文本:


解釋型字符串文本是雙引號之間的字符序列,如 中所示。在引號中,除了換行符和未轉義的雙引號之外,任何字符都可能出現。引號之間的文本構成文本的值,反斜杠轉義被解釋為它們在符文文本中(除了是非法的并且是合法的),具有相同的限制。三位數的八進制 () 和兩位數的十六進制 () 轉義表示結果字符串的各個字節;所有其他轉義表示單個字符的(可能是多字節)UTF-8 編碼。因此在字符串文本中表示一個值的單個字節,而 、 和 表示兩個字節的 UTF-8 編碼字符 U+00FF。"bar"\'\"\nnn\xnn\377\xFF0xFF=255?\u00FF\U000000FF\xc3\xbf0xc3 0xbf


查看完整回答
反對 回復 2022-08-15
  • 1 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號