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

No UTF-32 big-endian in C#?

在C#中,Encoding.UTF32是UTF-32小端,Encoding.BigEndianUnicode是UTF-16大端,Encoding.Unicode是UTF-16小端。但是我找不到任何 UTF-32 大端字节序。

我正在开发一个简单的文本查看器,我认为没有很多文档以 UTF-32 大端编码,但我也想为此做好准备,以防万一。

C#不支持UTF32 big-endian吗?

顺便说一句Java支持。

它确实支持 UTF-32 上的大端。只需使用 overloaded constructor:

自己创建编码
Encoding e = new UTF32Encoding(true /*bigEndian*/, true /*byteOrderMark*/);

Encoding 上预定义为 static 的编码并非详尽无遗的列表。您可以创建越来越多的其他编码。

//https://docs.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) );