【问题标题】:Remove special chars from a File从文件中删除特殊字符
【发布时间】:2010-04-23 15:55:21
【问题描述】:

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

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

问题是:

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

我使用相同的文件并在记事本中打开它,文件没问题,但是当我在写字板中打开它时,它看起来像 2 个字符(仅 1 个特殊字符)示例:在我拥有的文件中:

“0001 0003JUAN PEÑA33441JPENATEST”

但在 c# 中显示

“0001 0003JUAN PEï░A33441JPENATEST”

我使用编码 1251

有什么帮助吗?

【问题讨论】:

  • 您的客户是否需要向您发送编码为 1251 的文件?如果有,他们会这样做吗?
  • 我不确定你的问题是什么。我不知道记事本或写字板支持哪些编码类型,但这些应用程序如何显示您的文件可能并不重要。 “但在 C# 中它显示...”是什么意思?你的意思是在 Visual Studio 中?

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


【解决方案1】:

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

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

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。

【讨论】:

    【解决方案2】:

    我找到了一个知道文件编码的解决方案。

    阅读下一个链接:

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

    【讨论】:

      猜你喜欢
      • 2016-02-04
      • 2016-10-17
      • 1970-01-01
      • 2016-10-18
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      相关资源
      最近更新 更多