c# - 在字符串中定义 4 字节 UTF-16 字符

标签 c# unicode encoding character-encoding utf-16

我已阅读 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/

相关文章:

c# - 如何安装特定版本的nuget?

c# - 如何通过所有数据流 block 传播消息上限?

python - 将列名称应用于 pandas DataFrame,名称不再是 unicode

c - UNICODE_STRING 以 Null 终止

java - 使用 android pdf writer lib 对元音变音进行编码

C# ServiceStack.Redis SetAll 过期

Delphi 2006 system.delete 宽字符串?

c# - 纯 C# Silverlight 视频编码库?

delphi - 逐行读取流

c# - 检查 DataRow 是否包含特定列的最佳实践