首页 > 解决方案 > 1字节8位编码

问题描述

我需要System.String使用一些未知的兼容 ASCII 的 1 字节编码从文件中创建,以用正则表达式替换文本中的一些数字,但Encoding.ASCII它是 7 位的,并且 Utf-8 是多字节的,因此它不会往返返回相同的字节序列。

.Net Core 中是否有可以往返任何字节序列的编码?

UPD:Windows-1256 字符集看起来很有希望,但它仅限于 Windows。

标签: c#.netencodingcharacter-encoding.net-core-3.1

解决方案


首先,如果您不知道编码,则使用字符串更像是一种技巧,而不是一种解决方案。我想它可以更快并且可能更容易,但是对于更强大和更干净的解决方案,我只会处理 byte[] 或类似的东西。如果它是一次性解决方案,字符串会很好。

如果您真的想在这里使用字符串,我建议您查看 windows/cp 系列或 ISO 8859 系列的所有编码。例如在我的电脑上,我可以使用iso-8859-1. Windows 1256也可以,在 Linux 上通常称为cp 1256(CP 表示代码页)。

但是,不能保证所有平台都支持该编码,AFAIK .NET 只保证 UTF 和 Unicode。如果您希望在任何地方都可以使用此编码,请考虑使用这样的 nuget 包:https ://www.nuget.org/packages/System.Text.Encoding.CodePages/


推荐阅读