以下是 UTF-8 文件中的一行,我试图从中删除特殊字符 (0X0A),它显示为带有问号的黑色菱形:
2464577 外国法译评 True s6620178 Unspecified <1>�1009-672
这是在 SSIS 读取 SQL 表然后使用设置为代码页 65001 的平面文件 mgr 写出时生成的。
当我在 Notepad++ 中打开文件时,显示为 0X0A。
我正在寻找一些 C# 代码来明确删除该字符并将其替换为任何内容或空格。
这是我尝试过的:
string fileLocation = "c:\\MyFile.txt";
var content = string.Empty;
using (StreamReader reader = new System.IO.StreamReader(fileLocation))
{
content = reader.ReadToEnd();
reader.Close();
}
content = content.Replace('\u00A0', ' ');
//also tried: content.Replace((char)0X0A, ' ');
//also tried: content.Replace((char)0X0A, '');
//also tried: content.Replace((char)0X0A, (char)'\0');
Encoding encoding = Encoding.UTF8;
using (FileStream stream = new FileStream(fileLocation, FileMode.Create))
{
using (BinaryWriter writer = new BinaryWriter(stream, encoding))
{
writer.Write(encoding.GetPreamble()); //This is for writing the BOM
writer.Write(content);
}
}
我还尝试了这段代码来获取实际的字符串值:
byte[] bytes = { 0x0A };
string text = Encoding.UTF8.GetString(bytes);
它以“\n”的形式返回。所以在上面的代码中,我也尝试用双引号和单引号将“\n”替换为“”,但仍然没有变化。
在这一点上,我没有想法。有人有什么建议吗?
谢谢。