从文件中删除特殊字符

时间:2010-04-23 15:55:22

标签: c# character-encoding special-characters text-files

我正在尝试打开文本文件并删除所有特殊字符ñÑ'áí等...

该文件是客户端发送给我的布局,我解析它以将文件发送到AS400服务器,但我必须删除所有特殊字符。

问题是:

当我在c#中打开它时,一些带有一些特殊字符的文件会读取特殊字符和两个不同的字符并将整行向右移动一个空格,然后必须处于该位置的信息就不行了。< / p>

我拿相同的文件并在记事本中打开它并且文件正常但是当我在写字板中打开它时它看起来像2个字符(仅用于1个特殊字符)示例:在文件中我有:

<0001>“00010003JUANPEÑA33441JPENATEST”

但在c#中显示

“00010003JUANPEï░A33441JPENATEST”

我正在使用编码1251

任何帮助?

2 个答案:

答案 0 :(得分:0)

你有两个问题: 读取文件并删除字符。

您需要使用编写的编码读取文件:

StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding("YOUR FILE ENCODING"));

要删除字符,您可以手动尝试... 这是代码:

private static string CHAR_REPLACE_SRC = "áàãâÁÀÃÂéèêÉÈEíìîÍÌÎóòõôÓÒÕÔúùûÚÙÛçÇñÑ";
private static string CHAR_REPLACE_DST = "aaaaAAAAeeeEEEiiiIIIooooOOOOuuuUUUccnN";


private static string GetCleanString (string src)
{
    int i = 0;
    while (i < src.Length)
    {
        if (src[i] < 32 || src[i] > 127)
        {
            int pos = CHAR_REPLACE_SRC.IndexOf(src[i]);
            if (pos >= 0)
                src = src.Replace(CHAR_REPLACE_SRC[pos], CHAR_REPLACE_DST[pos]);
            else
                src = src.Remove(i, 1);
        }
        else
            i++;
    }
    return src.Replace("\"", "").Replace("?", "").Replace(":", "").Replace("&", "_").Replace("\\", "_").Replace("/", "_");
}

您可能需要做一些调整。 我正在使用它来从页面标题创建一个干净的URL。

答案 1 :(得分:-1)

我找到了解决文件编码的解决方案。

阅读下一个链接:

http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=469