\u{...} 表示法在 UNICODE 中是什么意思,为什么在 CLDR 项目中只有一些字符这样显示?
What does the \u{...} notation mean in UNICODE and why are only some characters displayed like this in the CLDR project?
在 this link 中,您会找到每种语言最常用的字符。为什么某些语言的某些字符显示在 \u{...} 符号下?
我觉得括号里的是字符的十六进制编码,但我不明白为什么他们只用一些字符。
似乎所有没有 well-defined stand-alone 外观的代码点(或者不是 意味着 用作 stand-alone字符)用这种表示法表示。
例如U+0A3C出现在“字符”{ਫ\u0A3C}
中。 U+0A3C 是一个组合代码点,修改它之前的代码点。
大括号中的字符序列 {}
是二合字母(三字母,...)在给定语言中被视为不同的字母(据说在字母表),例如
- digraph {ch}
cs
(捷克语);
- trigraph {dzs} in
hu
(匈牙利字母表);
kkj
(Kako 语言)中更复杂的二合字母示例显示了以下 Python 代码片段:
>>> kkj='[a á à â {a\u0327} b ɓ c d ɗ {ɗy} e é è ê ɛ {ɛ\u0301} {ɛ\u0300} {ɛ\u0302} {ɛ\u0327} f g {gb} {gw} h i í ì î {i\u0327} j k {kp} {kw} l m {mb} n {nd} nj {ny} ŋ {ŋg} {ŋgb} {ŋgw} o ó ò ô ɔ {ɔ\u0301} {ɔ\u0300} {ɔ\u0302} {ɔ\u0327} p r s t u ú ù û {u\u0327} v w y]'
>>> print( kkj)
[a á à â {a̧} b ɓ c d ɗ {ɗy} e é è ê ɛ {ɛ́} {ɛ̀} {ɛ̂} {ɛ̧} f g {gb} {gw} h i í ì î {i̧} j k {kp} {kw} l m {mb} n {nd} nj {ny} ŋ {ŋg} {ŋgb} {ŋgw} o ó ò ô ɔ {ɔ́} {ɔ̀} {ɔ̂} {ɔ̧} p r s t u ú ù û {u̧} v w y]
>>>
例如,{a\u0327}
呈现为 {a̧}
,即类似 拉丁小写字母 A 与组合 Cedilla 之类的东西,它没有 Unicode 等价物。一个反例:
ņ
(U+0146) 带有 Cedilla 的拉丁文小写字母 N 带有分解 004E 0327
:
>>> import unicodedata
>>> print( 'ņ', unicodedata.normalize('NFC','{n\u0327}'))
ņ {ņ}
编辑:
显示为 unicode 文字的字符(\uxxxx
= 具有 16 位十六进制值的字符 xxxx
)无法渲染 个(或至少 难以呈现 )。下面的 Python 脚本展示了其中的一些 (Bidi_Class Values L
-Left_To_Right, R
-Right_To_Left,NSM
-Nonspacing_Mark,BN
-Boundary_Neutral ):
# -*- coding: utf-8 -*-
import unicodedata
pa = 'ੱੰ਼੍ੁੂੇੈੋੌ'
pa = '\u0327 \u0A71 \u0A70 \u0A3C ੦ ੧ ੨ ੩ ੪ ੫ ੬ ੭ ੮ ੯ ੴ ੳ ਉ ਊ ਓ ਅ ਆ ਐ ਔ ੲ ਇ ਈ ਏ ਸ {ਸ\u0A3C} ਹ ਕ ਖ {ਖ\u0A3C} ਗ {ਗ\u0A3C} ਘ ਙ ਚ ਛ ਜ {ਜ\u0A3C} ਝ ਞ ਟ ਠ ਡ ਢ ਣ ਤ ਥ ਦ ਧ ਨ ਪ ਫ {ਫ\u0A3C} ਬ ਭ ਮ ਯ ਰ ਲ ਵ ੜ \u0A4D ਾ ਿ ੀ \u0A41 \u0A42 \u0A47 \u0A48 \u0A4B \u0A4C'
pa = '\u0300 \u0301 \u0302 \u1DC6 \u1DC7 \u0A71 \u0A70 \u0A3C \u0A4D \u0A41 \u0A42 \u0A47 \u0A48 \u0A4B \u0A4C \u05B7 \u05B8 \u05BF \u200C \u200D \u200E \u200F \u064B \u064C \u064E \u064F \u0650'
# above examples from ·kkj· ·bas· ·pa· ·yi· ·kn· ·ur· ·mzn·
print( pa )
for chr in pa:
if chr != ' ':
if chr == '{' or chr == '}':
print( chr )
else:
print( '\u%04x' % ord(chr), chr,
unicodedata.category(chr),
unicodedata.bidirectional(chr) + '\t',
str( unicodedata.combining(chr)) + '\t',
unicodedata.name(chr, '?') )
结果: .\SO659122.py
̀ ́ ̂ ᷆ ᷇ ੱ ੰ ਼ ੍ ੁ ੂ ੇ ੈ ੋ ੌ ַ ָ ֿ ً ٌ َ ُ ِ
\u0300 ̀ Mn NSM 230 COMBINING GRAVE ACCENT
\u0301 ́ Mn NSM 230 COMBINING ACUTE ACCENT
\u0302 ̂ Mn NSM 230 COMBINING CIRCUMFLEX ACCENT
\u1dc6 ᷆ Mn NSM 230 COMBINING MACRON-GRAVE
\u1dc7 ᷇ Mn NSM 230 COMBINING ACUTE-MACRON
\u0a71 ੱ Mn NSM 0 GURMUKHI ADDAK
\u0a70 ੰ Mn NSM 0 GURMUKHI TIPPI
\u0a3c ਼ Mn NSM 7 GURMUKHI SIGN NUKTA
\u0a4d ੍ Mn NSM 9 GURMUKHI SIGN VIRAMA
\u0a41 ੁ Mn NSM 0 GURMUKHI VOWEL SIGN U
\u0a42 ੂ Mn NSM 0 GURMUKHI VOWEL SIGN UU
\u0a47 ੇ Mn NSM 0 GURMUKHI VOWEL SIGN EE
\u0a48 ੈ Mn NSM 0 GURMUKHI VOWEL SIGN AI
\u0a4b ੋ Mn NSM 0 GURMUKHI VOWEL SIGN OO
\u0a4c ੌ Mn NSM 0 GURMUKHI VOWEL SIGN AU
\u05b7 ַ Mn NSM 17 HEBREW POINT PATAH
\u05b8 ָ Mn NSM 18 HEBREW POINT QAMATS
\u05bf ֿ Mn NSM 23 HEBREW POINT RAFE
\u200c Cf BN 0 ZERO WIDTH NON-JOINER
\u200d Cf BN 0 ZERO WIDTH JOINER
\u200e Cf L 0 LEFT-TO-RIGHT MARK
\u200f Cf R 0 RIGHT-TO-LEFT MARK
\u064b ً Mn NSM 27 ARABIC FATHATAN
\u064c ٌ Mn NSM 28 ARABIC DAMMATAN
\u064e َ Mn NSM 30 ARABIC FATHA
\u064f ُ Mn NSM 31 ARABIC DAMMA
\u0650 ِ Mn NSM 32 ARABIC KASRA
在 this link 中,您会找到每种语言最常用的字符。为什么某些语言的某些字符显示在 \u{...} 符号下? 我觉得括号里的是字符的十六进制编码,但我不明白为什么他们只用一些字符。
似乎所有没有 well-defined stand-alone 外观的代码点(或者不是 意味着 用作 stand-alone字符)用这种表示法表示。
例如U+0A3C出现在“字符”{ਫ\u0A3C}
中。 U+0A3C 是一个组合代码点,修改它之前的代码点。
大括号中的字符序列 {}
是二合字母(三字母,...)在给定语言中被视为不同的字母(据说在字母表),例如
- digraph {ch}
cs
(捷克语); - trigraph {dzs} in
hu
(匈牙利字母表); kkj
(Kako 语言)中更复杂的二合字母示例显示了以下 Python 代码片段:
>>> kkj='[a á à â {a\u0327} b ɓ c d ɗ {ɗy} e é è ê ɛ {ɛ\u0301} {ɛ\u0300} {ɛ\u0302} {ɛ\u0327} f g {gb} {gw} h i í ì î {i\u0327} j k {kp} {kw} l m {mb} n {nd} nj {ny} ŋ {ŋg} {ŋgb} {ŋgw} o ó ò ô ɔ {ɔ\u0301} {ɔ\u0300} {ɔ\u0302} {ɔ\u0327} p r s t u ú ù û {u\u0327} v w y]'
>>> print( kkj)
[a á à â {a̧} b ɓ c d ɗ {ɗy} e é è ê ɛ {ɛ́} {ɛ̀} {ɛ̂} {ɛ̧} f g {gb} {gw} h i í ì î {i̧} j k {kp} {kw} l m {mb} n {nd} nj {ny} ŋ {ŋg} {ŋgb} {ŋgw} o ó ò ô ɔ {ɔ́} {ɔ̀} {ɔ̂} {ɔ̧} p r s t u ú ù û {u̧} v w y]
>>>
例如,{a\u0327}
呈现为 {a̧}
,即类似 拉丁小写字母 A 与组合 Cedilla 之类的东西,它没有 Unicode 等价物。一个反例:
ņ
(U+0146) 带有 Cedilla 的拉丁文小写字母 N 带有分解 004E 0327
:
>>> import unicodedata
>>> print( 'ņ', unicodedata.normalize('NFC','{n\u0327}'))
ņ {ņ}
编辑:
显示为 unicode 文字的字符(\uxxxx
= 具有 16 位十六进制值的字符 xxxx
)无法渲染 个(或至少 难以呈现 )。下面的 Python 脚本展示了其中的一些 (Bidi_Class Values L
-Left_To_Right, R
-Right_To_Left,NSM
-Nonspacing_Mark,BN
-Boundary_Neutral ):
# -*- coding: utf-8 -*-
import unicodedata
pa = 'ੱੰ਼੍ੁੂੇੈੋੌ'
pa = '\u0327 \u0A71 \u0A70 \u0A3C ੦ ੧ ੨ ੩ ੪ ੫ ੬ ੭ ੮ ੯ ੴ ੳ ਉ ਊ ਓ ਅ ਆ ਐ ਔ ੲ ਇ ਈ ਏ ਸ {ਸ\u0A3C} ਹ ਕ ਖ {ਖ\u0A3C} ਗ {ਗ\u0A3C} ਘ ਙ ਚ ਛ ਜ {ਜ\u0A3C} ਝ ਞ ਟ ਠ ਡ ਢ ਣ ਤ ਥ ਦ ਧ ਨ ਪ ਫ {ਫ\u0A3C} ਬ ਭ ਮ ਯ ਰ ਲ ਵ ੜ \u0A4D ਾ ਿ ੀ \u0A41 \u0A42 \u0A47 \u0A48 \u0A4B \u0A4C'
pa = '\u0300 \u0301 \u0302 \u1DC6 \u1DC7 \u0A71 \u0A70 \u0A3C \u0A4D \u0A41 \u0A42 \u0A47 \u0A48 \u0A4B \u0A4C \u05B7 \u05B8 \u05BF \u200C \u200D \u200E \u200F \u064B \u064C \u064E \u064F \u0650'
# above examples from ·kkj· ·bas· ·pa· ·yi· ·kn· ·ur· ·mzn·
print( pa )
for chr in pa:
if chr != ' ':
if chr == '{' or chr == '}':
print( chr )
else:
print( '\u%04x' % ord(chr), chr,
unicodedata.category(chr),
unicodedata.bidirectional(chr) + '\t',
str( unicodedata.combining(chr)) + '\t',
unicodedata.name(chr, '?') )
结果: .\SO659122.py
̀ ́ ̂ ᷆ ᷇ ੱ ੰ ਼ ੍ ੁ ੂ ੇ ੈ ੋ ੌ ַ ָ ֿ ً ٌ َ ُ ِ \u0300 ̀ Mn NSM 230 COMBINING GRAVE ACCENT \u0301 ́ Mn NSM 230 COMBINING ACUTE ACCENT \u0302 ̂ Mn NSM 230 COMBINING CIRCUMFLEX ACCENT \u1dc6 ᷆ Mn NSM 230 COMBINING MACRON-GRAVE \u1dc7 ᷇ Mn NSM 230 COMBINING ACUTE-MACRON \u0a71 ੱ Mn NSM 0 GURMUKHI ADDAK \u0a70 ੰ Mn NSM 0 GURMUKHI TIPPI \u0a3c ਼ Mn NSM 7 GURMUKHI SIGN NUKTA \u0a4d ੍ Mn NSM 9 GURMUKHI SIGN VIRAMA \u0a41 ੁ Mn NSM 0 GURMUKHI VOWEL SIGN U \u0a42 ੂ Mn NSM 0 GURMUKHI VOWEL SIGN UU \u0a47 ੇ Mn NSM 0 GURMUKHI VOWEL SIGN EE \u0a48 ੈ Mn NSM 0 GURMUKHI VOWEL SIGN AI \u0a4b ੋ Mn NSM 0 GURMUKHI VOWEL SIGN OO \u0a4c ੌ Mn NSM 0 GURMUKHI VOWEL SIGN AU \u05b7 ַ Mn NSM 17 HEBREW POINT PATAH \u05b8 ָ Mn NSM 18 HEBREW POINT QAMATS \u05bf ֿ Mn NSM 23 HEBREW POINT RAFE \u200c Cf BN 0 ZERO WIDTH NON-JOINER \u200d Cf BN 0 ZERO WIDTH JOINER \u200e Cf L 0 LEFT-TO-RIGHT MARK \u200f Cf R 0 RIGHT-TO-LEFT MARK \u064b ً Mn NSM 27 ARABIC FATHATAN \u064c ٌ Mn NSM 28 ARABIC DAMMATAN \u064e َ Mn NSM 30 ARABIC FATHA \u064f ُ Mn NSM 31 ARABIC DAMMA \u0650 ِ Mn NSM 32 ARABIC KASRA