如何在 .NET C# 中解析阿拉伯文本字符串的每个字母?
How do I parse each letter of an Arabic text string in .NET C#?
为什么当我在第 13th 位置遍历此 .NET C# 字符串 Arabic text: ٻڠڣڟگگښڏ
的每个字符时,我得到了错误的字母? 'ٻ' 而不是 'ˊ'。
我该如何解决?
阿拉伯语是从右到左书写的。箭头指向偏移量 20 处的字符。
你指向最后一个
0: U+0041 LATIN CAPITAL LETTER A
1: U+0072 LATIN SMALL LETTER R
2: U+0061 LATIN SMALL LETTER A
3: U+0062 LATIN SMALL LETTER B
4: U+0069 LATIN SMALL LETTER I
5: U+0063 LATIN SMALL LETTER C
6: U+0020 SPACE
7: U+0074 LATIN SMALL LETTER T
8: U+0065 LATIN SMALL LETTER E
9: U+0078 LATIN SMALL LETTER X
10: U+0074 LATIN SMALL LETTER T
11: U+003A COLON
12: U+0020 SPACE
13: U+067B ARABIC LETTER BEEH
14: U+06A0 ARABIC LETTER AIN WITH THREE DOTS ABOVE
15: U+06A3 ARABIC LETTER FEH WITH DOT BELOW
16: U+069F ARABIC LETTER TAH WITH THREE DOTS ABOVE
17: U+06AF ARABIC LETTER GAF
18: U+06AF ARABIC LETTER GAF
19: U+069A ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
20: U+068F ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
而且这还没有涉及字素(视觉元素)可以由多个 Unicode 代码点组成的事实,并且 C# 使用代理对,因此使用多个 char
值来表示一些 Unicode 代码点。
例如,存在一个脚本,其中存在以下字素:1
- 字素由 Unicode 代码点 U+11A0B 后跟 U+11A33 组成。
- C# 将 U+11A0B 编码为字符 0xD806,后跟 0xDE0B。
- C# 将 U+11A33 编码为字符 0xD806,后跟 0xDE33。
因此字素将由以下四个 char
值序列表示!
- 0xD806
- 0xDE0B
- 0xD806
- 0xDE33
不,它不仅仅适用于古老的语言。 ""被很多人日常使用。
- 字素由 Unicode 代码点 U+1F600 形成。
- C# 将 U+1F600 编码为字符 0xD83D,后跟 0xDE00。
- 我不熟悉所讨论的脚本,所以我不知道这个角色在实践中是否有意义。但如果这个没有,其他类似的字符确实有意义。
为什么当我在第 13th 位置遍历此 .NET C# 字符串 Arabic text: ٻڠڣڟگگښڏ
的每个字符时,我得到了错误的字母? 'ٻ' 而不是 'ˊ'。
我该如何解决?
阿拉伯语是从右到左书写的。箭头指向偏移量 20 处的字符。
你指向最后一个
0: U+0041 LATIN CAPITAL LETTER A
1: U+0072 LATIN SMALL LETTER R
2: U+0061 LATIN SMALL LETTER A
3: U+0062 LATIN SMALL LETTER B
4: U+0069 LATIN SMALL LETTER I
5: U+0063 LATIN SMALL LETTER C
6: U+0020 SPACE
7: U+0074 LATIN SMALL LETTER T
8: U+0065 LATIN SMALL LETTER E
9: U+0078 LATIN SMALL LETTER X
10: U+0074 LATIN SMALL LETTER T
11: U+003A COLON
12: U+0020 SPACE
13: U+067B ARABIC LETTER BEEH
14: U+06A0 ARABIC LETTER AIN WITH THREE DOTS ABOVE
15: U+06A3 ARABIC LETTER FEH WITH DOT BELOW
16: U+069F ARABIC LETTER TAH WITH THREE DOTS ABOVE
17: U+06AF ARABIC LETTER GAF
18: U+06AF ARABIC LETTER GAF
19: U+069A ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
20: U+068F ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
而且这还没有涉及字素(视觉元素)可以由多个 Unicode 代码点组成的事实,并且 C# 使用代理对,因此使用多个 char
值来表示一些 Unicode 代码点。
例如,存在一个脚本,其中存在以下字素:1
- 字素由 Unicode 代码点 U+11A0B 后跟 U+11A33 组成。
- C# 将 U+11A0B 编码为字符 0xD806,后跟 0xDE0B。
- C# 将 U+11A33 编码为字符 0xD806,后跟 0xDE33。
因此字素将由以下四个 char
值序列表示!
- 0xD806
- 0xDE0B
- 0xD806
- 0xDE33
不,它不仅仅适用于古老的语言。 ""被很多人日常使用。
- 字素由 Unicode 代码点 U+1F600 形成。
- C# 将 U+1F600 编码为字符 0xD83D,后跟 0xDE00。
- 我不熟悉所讨论的脚本,所以我不知道这个角色在实践中是否有意义。但如果这个没有,其他类似的字符确实有意义。