c#中没有UTF-32大端

本文关键字:UTF-32 大端 | 更新日期: 2023-09-27 18:16:28

在c#中,Encoding.UTF32为UTF-32小端dian, Encoding.BigEndianUnicode为UTF-16大端dian, Encoding.Unicode为UTF-16小端dian。但是我找不到任何UTF-32大端字符。

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

c#不支持UTF32大端?

c#中没有UTF-32大端

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

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

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

//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) );