1

以下是 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”替换为“”,但仍然没有变化。

在这一点上,我没有想法。有人有什么建议吗?

谢谢。

4

3 回答 3

0

您可以将字符串转换为 char 数组并循环遍历该数组。然后检查黑色钻石是什么炭,然后将其移除。

于 2013-08-02T15:34:56.273 回答
0

可能想看看正则表达式替换,作为一个很好的例子,看看这个页面底部的帖子...... http://social.msdn.microsoft.com/Forums/en-US/1b523d24 -dab6-4870-a9ca-5d313d1ee602/invalid-character-returned-from-webservice

于 2013-08-02T15:33:05.917 回答
0
string content = "blahblah" + (char)10 + "blahblah"; 

char find = (char)10;

content = content.Replace(find.ToString(), ""); 
于 2013-08-02T15:45:35.373 回答