gpt4 book ai didi

c# - 从记事本保存和检索数据时遇到奇怪的事情

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:04 25 4
gpt4 key购买 nike

最近我试图使用 Unicode 编码将数据保存在记事本中,但是当我尝试通过 Unicode 编码从记事本中检索我的数据时,它显示了其他内容。我在记事本中实际保存的是“((char)56774)”,但我从记事本中检索到的是“((char)65533)”

代码如下:-

File.WriteAllText("Foo.txt", ((char)56774).ToString(), Encoding.Unicode);
string s = File.ReadAllText("Foo.txt", Encoding.Unicode);
char[] c = s.ToCharArray();

请告诉我哪里出错了,或者我应该如何从记事本中取回相同的字符。

提前致谢

最佳答案

\uDDC6 是一个 low surrogate pair所以它不仅仅是你为了形成一个完整的角色而提供的角色。

您可以通过使用您自己的编码器确认它不支持此字符,该编码器在使用无效字符时抛出异常。

var customEncoder = new UTF8Encoding(true, true);
File.WriteAllText("Foo.txt", ((char)56774).ToString(), customEncoder);
char c = Convert.ToChar(File.ReadAllText("Foo.txt", customEncoder));

请注意,当它读取该字符时会抛出异常,这让您知道它是无效的。

根据您的要求,您可能会直接输出字节:

File.WriteAllBytes("Foo.bin", BitConverter.GetBytes((char)56774));
char writtenCharacter = BitConverter.ToChar(File.ReadAllBytes("Foo.bin"), 0);

关于c# - 从记事本保存和检索数据时遇到奇怪的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27222479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com