Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 处理特殊字符(¦;)_C# - Fatal编程技术网

C# 处理特殊字符(¦;)

C# 处理特殊字符(¦;),c#,C#,当出现特殊字符时,我对如何读写C#中的文本文件有点迷茫。我正在编写一个简单的脚本,它对一个.txt数据文件进行一些清理,该文件包含了作为其分隔符的“?”字符 foreach (string file in Directory.EnumerateFiles(@"path\raw txt","*.txt")) { string contents = File.ReadAllText(file);

当出现特殊字符时,我对如何读写C#中的文本文件有点迷茫。我正在编写一个简单的脚本,它对一个.txt数据文件进行一些清理,该文件包含了作为其分隔符的“?”字符

 foreach (string file in Directory.EnumerateFiles(@"path\raw txt","*.txt"))
            {
                string contents = File.ReadAllText(file);              
                contents = contents.Replace("¦", ",");
                File.WriteAllText(file.Replace("raw txt", "txt"), contents);
            }
但是,当我在Notepad++中打开txt文件时,delimeter现在是�. 到底发生了什么?这个字符(α)编码是什么/我如何确定?我尝试过添加以下内容:

string contents = File.ReadAllText(file, Encoding.UTF8);
File.WriteAllText(file.Replace("raw txt", "txt"), contents, Encoding.UTF8);

尝试将记事本的编码更改为UTF-8

在读/写时将编码切换为“默认”即可正常工作

string contents = File.ReadAllText(file, Encoding.Default);
File.WriteAllText(file.Replace("raw txt", "txt"), contents, Encoding.Default);

“我相信记事本++显示了大多数这样的特殊字符。@James_Parsons在运行脚本之前,分隔符在记事本++中显示得很好,文件来自哪里?基本上,你需要知道它的编码,并确保你正确地阅读它。为什么有人否决了这个?这是一个非常好的问题,来自一个不必处理字符编码的人(这是很多人提出的)。可以帮助解决类似问题的其他人。因此,+1