如何删除c#文件流中的黑钻石问号

时间:2013-07-21 06:52:49

标签: c# winforms text-files filestream

如何在阅读文本文件时删除黑钻石问号?

在文本文件中,真正的字符是•但在阅读文本文件后它变为 。我不知道如何操纵/删除那个角色。

4 个答案:

答案 0 :(得分:3)

此字符表示您正在以错误的编码方式读取文件。首先,您需要知道文件的编码方式。例如,您可以从Notepad ++获取此信息。然后在您的代码中读取指定此编码的文件。以下是读取unicode文件的示例:

var text = File.ReadAllText(filePath, Encoding.Unicode);

删除字符:

text.Replace("•", string.Empty);

答案 1 :(得分:2)

您可以为该角色设置条件。然后使用Remove方法。像这样的东西:

if(inputstring.StartsWith('�')
{
    inputstring = inputstring.Remove(0,1);
}

答案 2 :(得分:0)

black diamond with a question mark is a place-holder for unrecognized characters。您可以使用Regex将替换为空字符串:

//...
using System.Text.RegularExpressions;
using System.IO;
//...

string filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "file.txt");

string yourString = Regex.Replace(File.ReadAllText(filePath, "file.txt")), @"\u2022", "");

由于字符的值为u2022,因此正则表达式模式将匹配它并将其替换为空字符串。在这种情况下,Regex.Replace()需要3个参数:源字符串,表达式和替换匹配模式的文本的字符串。

我测试了它并且它运行得很好:

file.txt的内容:hello, •world!

使用Regex替换后:

screenshot

答案 3 :(得分:-1)

File.ReadAllLines(pathTxt, Encoding.GetEncoding(28591));