在c#中,Encoding.UTF32
为UTF-32小端dian, Encoding.BigEndianUnicode
为UTF-16大端dian, Encoding.Unicode
为UTF-16小端dian。但是我找不到任何UTF-32大端字符。
我正在开发一个简单的textviewer,不认为有很多文档以UTF-32大端编码,但我也想为此做好准备,以防万一。
c#不支持UTF32大端?
在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) );