c# - 如何将扩展的 ascii 转换为 System.String?

标签 c# .net extended-ascii

例如:“½”或 ASCII DEC 189。当我从文本文件中读取字节时,byte[] 包含有效值,在本例中为 189。

转换为 Unicode 会产生 Unicode 替换字符 65533。

UnicodeEncoding.Unicode.GetString(b);

转换为 ASCII 结果为 63 或“?”

ASCIIEncoding.ASCII.GetString(b);

如果这不可能,那么处理这些数据的最佳方式是什么?我希望能够执行像 Replace() 这样的字符串函数。

最佳答案

字节 189 代表 iso-8859-1(又名“Latin-1”)中的“½”,因此以下内容可能是您想要的:

var e = Encoding.GetEncoding("iso-8859-1");
var s = e.GetString(new byte[] { 189 });

.NET 中的所有字符串和字符都是 UTF-16 编码的,因此您需要使用编码器/解码器来转换任何其他内容,有时这是默认设置(例如 FileStream 实例的 UTF-8),但好的做法是始终指定.

您将需要某种形式的隐式或(更好的)显式元数据来为您提供有关哪种编码的信息。

关于c# - 如何将扩展的 ascii 转换为 System.String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/666385/

相关文章:

Python:如何在 Mac 中使用 ASCII #219 打印 'block'

c# - 每次点击时使用同一按钮触发2个不同事件的有效方法?

c# - System.Object 类中的 Finalize 方法

sql - Informix Upper() 不支持法语字符

ruby - 转换错误?

c# - 从 appsettings c# 读取 json 数组

c# - 根据 C# LINQ 中的子节点 XML 获取特定的父节点

c# - W3C、Google Gears 和 Loki 地理定位基于什么?

c# - 使用 Kinect 深度 View 显示人体内部的物体

c# - 运算符重载放置和冗余