C#中没有UTF-32大端序?

9
在C#中,Encoding.UTF32是UTF-32小端序,Encoding.BigEndianUnicode是UTF-16大端序,Encoding.Unicode是UTF-16小端序。但我找不到UTF-32大端序的编码方式。
我正在开发一个简单的文本查看器,虽然我认为很少有文件使用UTF-32大端序进行编码,但我也想为这种情况做好准备。
请问C#不支持UTF32大端序吗?顺便说一下,Java支持此编码方式。

1
https://msdn.microsoft.com/zh-cn/library/system.text.utf32encoding(v=vs.110).aspx 似乎表明字节顺序是构造函数的一个参数 - 这与您想要的有所不同吗? - Peter - Reinstate Monica
1
Encoding.GetEncoding("utf-32be") 是获取一个的简单方法。 - Hans Passant
谢谢你们两个提供有益的回复! - Jenix
2个回答

14

它在UTF-32上支持大端序。只需使用重载构造函数创建编码即可:

Encoding e = new UTF32Encoding(true /*bigEndian*/, true /*byteOrderMark*/);

Encoding上预定义为static的编码不是一个详尽的列表。你可以创建更多和更多其他的编码。


我找到了一些资源,它们说可以做到,但没有明确说明如何做 - 做得好! - Luke Baughan
哇!你救了我!非常感谢! - Jenix

0
//https://learn.microsoft.com/en-us/dotnet/api/system.text.encoding?view=netframework-4.7.2
//12000 utf-32  Unicode (UTF-32)    ✓   ✓
//12001 utf-32BE    Unicode (UTF-32 Big endian)
const string strUniRepChr = "�"; //Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD)
Encoding cpUTF32 = Encoding.GetEncoding(12000,
                   new EncoderReplacementFallback(strUniRepChr),
                   new DecoderReplacementFallback(strUniRepChr) );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接