簡體   English   中英

在 Bash shell 中,獲取 Unicode 的“\\U”和“\\u”之間有什么區別?

[英]In Bash shell, what's the difference between "\U" and "\u" for getting Unicode?

似乎“\\u”只能解碼四個十六進制數字

root@bemoan[15:36:29]:~# echo -e '\\U30'

0

root@bemoan[15:47:01]:~# echo -e '\\u30\u0026#39;

0

root@bemoan[15:47:06]:~# echo -e '\⏰'

root@bemoan[15:48:40]:~# echo -e '\ἴ0'

ἴ0

root@bemoan[15:49:06]:~# echo -e '\\U1f340'

🍀

U+1f340 "\ἴ0" 不起作用,但 "\\U1f340" 起作用

歡迎來到 StackOverflow! 您正在使用bash shell 和 Unicode 文本。 這些都是豐富而有趣的工具。 我希望你在探索它們時玩得開心。

您正在使用命令echo -e 查看Bash 參考手冊的4.2 Bash 內置命令部分中的echo條目 它說“如果給出 -e 選項,則啟用對以下反斜杠轉義字符的解釋。” 這些字符包括:

\\uHHHH

Unicode (ISO/IEC 10646) 字符,其值為十六進制值HHHH (一到四個十六進制數字)

\\UHHHHHHHH

Unicode (ISO/IEC 10646) 字符,其值為十六進制值HHHHHHHH (一到八個十六進制數字)

這正是你所看到的。

當您執行echo -e '\ἴ0'\\u\u003c/code> (小寫的 'u')告訴echo讀取以下四個而不是五個十六進制字符以獲取 Unicode 字符值。 echo讀取它們並打印U+1F34 帶有 PSILI 和 OXIA 的希臘小寫字母 IOTA 然后echo讀取字符串中剩余的字符0並打印它。 這給出了您所看到的: ἴ0

當您執行echo -e '\\U1f340'\\U (大寫 'U')告訴echo讀取以下五個十六進制字符以獲取 Unicode 字符值。 它將接受 1 到 8 個十六進制字符。 echo讀取它們並打印U+1F340 FOUR LEAF CLOVER 這給出了你所看到的: 🍀

要了解有關bash 的更多信息,我鼓勵從上到下閱讀Bash 參考手冊 一開始讓大部分事情都超過你的頭腦。 為它添加書簽,當您在理解bash時遇到問題時,請返回特定部分。 在使用bash這樣的 shell 40 年后,我仍然每個月這樣做大約 2-3 次。 要了解有關 Unicode 的更多信息,我鼓勵您開始閱讀https://home.unicode.org/ ,從首頁上的介紹視頻開始。 請回來在 StackOverlow 上提出更多好的問題。 然后自己回答幾個問題!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM