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