gpt4 book ai didi

C# 大端 UCS-2

转载 作者:行者123 更新时间:2023-12-05 01:03:20 26 4
gpt4 key购买 nike

我目前正在处理的项目需要与我们不制作的客户端系统交互,因此我们无法控制数据的发送方式。问题是在 C# 中工作,它似乎对 UCS-2 没有任何支持,对 big-endian 的支持也很少。 (据我所知)

我想知道的是,是否有我在 .net 中查看过的内容,或者其他人制作并发布的我们可以使用的内容。如果没有,我会尝试用自定义方法对其进行编码/解码,如果可能的话。

但无论如何感谢您的时间。

编辑:BigEndianUnicode 确实可以正确解码字符串,问题在于接收其他数据作为大端,到目前为止,按照其他地方的建议使用 IPAddress.HostToNetworkOrder() 允许我解码字符串的一半(Merli?是什么出现了,应该是Merlin33069)

我正在梳理短代码,看看是否还有我错过的另一个长度变量

解决方案:在确定 bigendian 变量是主要问题后,我回顾并查看了详细信息,似乎字符串的长度是以字符数而不是字节数发送的(在 utf 中,char 似乎是两个字节)我需要做的就是把它翻倍,它成功了。谢谢大家的帮助。

最佳答案

string x = "abc";
byte[] data = Encoding.BigEndianUnicode.GetBytes(x);

另一个方向:

string decodedX = Encoding.BigEndianUnicode.GetString(data);

不是完全正确 UCS-2但对于大多数情况来说已经足够了。

更新: Unicode FAQ

Q: What is the difference between UCS-2 and UTF-16?

A: UCS-2 is obsolete terminology which refers to a Unicode implementation up to Unicode 1.1, before surrogate code points and UTF-16 were added to Version 2.0 of the standard. This term should now be avoided.

UCS-2 does not define a distinct data format, because UTF-16 and UCS-2 are identical for purposes of data exchange. Both are 16-bit, and have exactly the same code unit representation.

Sometimes in the past an implementation has been labeled "UCS-2" to indicate that it does not support supplementary characters and doesn't interpret pairs of surrogate code points as characters. Such an implementation would not handle processing of character properties, code point boundaries, collation, etc. for supplementary characters.

关于C# 大端 UCS-2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6971593/

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