我正在导入一个 csv 文件,在读取它时,读取的字符串中出现了像“�”这样的特殊字符,如何避免这些 unicode 字符。
我正在使用 TextFieldParser 来解析数据,但是在阅读时,句子中两个字符串之间的空格被替换为字符“�”。尝试对字符串进行包含搜索并替换字符,但特殊字符稍后可能会有所不同。
Encoding DefaultEncoding = Encoding.UTF8;
public IList<string[]> ReadCsvData()
{
using (var reader = ReadBase64File())
{
return CsvParser.ReadCsvData(reader);
}
}
TextReader ReadBase64File()
{
var bytes = Convert.FromBase64String(base64File);
return new StreamReader(new MemoryStream(bytes), DefaultEncoding, true);
}
public static IList<string[]> ReadCsvData(TextReader reader)
{
IList<string[]> csvData = new List<string[]>();
using (Microsoft.VisualBasic.FileIO.TextFieldParser parser = new Microsoft.VisualBasic.FileIO.TextFieldParser(reader))
{
parser.SetDelimiters(",");
parser.TrimWhiteSpace = true;
try
{
while (!parser.EndOfData)
{
csvData.Add(parser.ReadFields());
}
}
catch (Microsoft.VisualBasic.FileIO.MalformedLineException ex)
{
throw new FormatException($"Invalid format found when importing the CSV data (line {parser.ErrorLineNumber}).", ex);
}
}
return csvData;
}