我已阅读 a question about UTF-8, UTF-16 and UCS-2几乎所有答案都声明 UCS-2 已过时,C# 使用 UTF-16。
但是,我在 C# 中创建 4 字节字符 U+1D11E 的所有尝试都失败了,所以我实际上认为 C# 仅使用 UTF-16 的 UCS-2 子集。
有我的尝试:
string s = "\u1D11E"; // gives the 2 character string "ᴑE", because \u1D11 is ᴑ
string s = (char) 0x1D11E; // won't compile because of an overflow
string s = Encoding.Unicode.GetString(new byte[] {0xD8, 0x34, 0xDD, 0x1E}); // gives 㓘ờ
C# 字符串真的是 UTF-16 还是 UCS-2?如果它们是 UTF-16,我如何将 fiddle 谱号放入我的 C# 字符串中?
最佳答案
改用大写字母 U:
string s = "\U0001D11E";
而且您忽略了大多数机器都是小端的:
string t = Encoding.Unicode.GetString(new byte[] { 0x34, 0xD8, 0x1E, 0xDD });
关于c# - 在字符串中定义 4 字节 UTF-16 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20874428/