用于 ScintillaNET 的字节数组到文本
Posted
技术标签:
【中文标题】用于 ScintillaNET 的字节数组到文本【英文标题】:Byte array to text for ScintillaNET 【发布时间】:2012-09-23 23:46:00 【问题描述】:我正在用 C# 编写一个 Windows 窗体应用程序。该应用程序允许用户从列表框中选择源代码文件,并使用 ScintillaNET 以彩色代码显示它们。这些文件在数据库中保存为字节数组。我已经设法从我的硬盘驱动器上的文件转换为字节数组并存储它。用户还应该能够编辑代码,然后将其保存到数据库中,而无需先将文件下载到本地硬盘,我不知道如何处理。
基本上我想从 ScintillNET 控件中保存文本并将其转换为字节数组。 反过来,获取一个字节数组并打印出最初出现在 ScintillaNET 中的文本。
【问题讨论】:
【参考方案1】:您可以使用 System.Text 中的“编码”类。
System.Text.Encoding.Unicode.GetBytes("Example");
这将返回一个字节数组,其字节相当于使用 unicode 编码的文本“字符串”。还有其他可用的编码,但我建议使用 unicode,因为它支持更多字符(例如,您在 windows charmap 中找到的任何字符)。就我而言,是因为我是拉丁语,某些字母在 UTF 中不可用,我对 ASCII 有疑问。
现在从字节数组转换为字符串使用:
byte[] exampleByteArray = MemStream.ToArray();
System.Text.Encoding.Unicode.GetString(exampleByteArray);
此代码将返回先前保存为内存流中的字节数组的字符串。您可以使用其他方法加载字节数组,在您的情况下,您将从数据库中加载它并调用 System.Text.Encoding.Unicode.GetString()。
【讨论】:
不错的答案。只是一个警告,ScintillaNET 可能需要特定的编码。请务必检查!【参考方案2】:我相信您正在寻找 System.Text.Encoding 命名空间...
// a sample string...
string example = "A string example...";
// convert string to bytes
byte[] bytes = Encoding.UTF8.GetBytes(example);
// convert bytes to string
string str = System.Text.Encoding.UTF8.GetString(bytes);
【讨论】:
以上是关于用于 ScintillaNET 的字节数组到文本的主要内容,如果未能解决你的问题,请参考以下文章
保护 ScintillaNet 中的一系列文本:最好的方法是啥?