c# - 在 C# 中将字符串存储为 UTF8

标签 c# .net string utf-8 ascii

我在 C# 中进行了大量的字符串操作,并且确实需要将字符串每个字符存储一个字节。这是因为我需要在内存中同时存储数 GB 的文本,这会导致内存不足的问题。我确信该文本永远不会包含非 ASCII 字符,因此就我的目的而言,System.String 和 System.Char 将所有内容存储为每个字符两个字节这一事实既不必要又是一个真正的问题。

我即将开始编写自己的 CharAscii 和 StringAscii 类 - 字符串类基本上将其数据保存为 byte[],并公开与 System.String 类似的字符串操作方法。然而,要完成一些看起来非常标准的问题似乎需要做很多工作,所以我真的在这里发帖是为了检查是否还没有更简单的解决方案。例如,是否有某种方法可以让 System.String 在内部将数据存储为我没有注意到的 UTF8,或者其他解决问题的方法?

最佳答案

那么,您可以创建一个包装器,以 UTF-8 字节形式检索数据,并根据需要将片段转换为 System.String,然后反之亦然,将字符串推回内存。编码类将在此处帮助您:

var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);

var myReturnedString = utf8.GetString(utfBytes);

关于c# - 在 C# 中将字符串存储为 UTF8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144568/

相关文章:

c# - 当属性设置为值时禁用行选择数据网格 WPF

javascript - JS/C# 接口(interface)的 API 标准 - Camel 与 Pascal 案例

c# - 以最少的内存消耗将文本文件解析为列表

c# - Windows 手机 7 : Other ways to remind the user of an event then alarm?

c++ - 比较两个字符串的最佳或最快方法是什么?

python - 大字符串的某些部分不会被 str.replace() 函数替换

c# - 将 cout 从 C++ dll 重定向到 C# 中的文本框

c# - 通过调用另一个方法退出一个方法

.net - 如何修复 "the type or namespace name "系统“无法找到您是否缺少指令或程序集引用 (CS0246)”

python - 为什么在使用非 ASCII 字符时无法转换字符串?