我有一个带有奇怪编码问题的.cs文件的项目。
Visual Studio没有任何问题,但是一旦我尝试使用第三方工具进行静态分析,它会立即出现解析错误。
使用十六进制编辑器我打开了有问题的文件并发现了这个(只显示一个片段,但整个文件是这样的):
    public class CacheCommandElementCollection : ConfigurationElementCollection..    {..       Â
我确定垃圾字符会与其他编码显示不同......
该特定文件夹中没有其他文件表现出相同的行为,但我确信整个解决方案中还有更多文件。
我有一个脚本可以将所有.cs文件更改为UTF8编码,但仅此一项并不会删除垃圾字符,.Replace("Â", string.Empty)
知道如何从源文件中清除这个角色吗?
答案 0 :(得分:2)
源文件是UTF-8,代码使用不间断空格缩进。该第三方工具要么使用不正确的编码读取代码,要么不支持非ASCII空格。
根据规范,您可以在C#中使用不间断的空格。
如果可以,请尝试将该工具配置为使用UTF-8进行源编码。如果它不可能,或者它不起作用,你可以简单地用普通空格替换所有那些不间断的空格。
Â
是在Windows-1252或Windows-1250中解释的字节c2 a0
(UTF-8中的不间断空格)。这里显示的第二个字符也是一个不间断的空间。
您还可以通过使用Visual Studio自动重新格式化所有代码来修复它,或使用内置的搜索和替换功能将所有非破坏空间替换为普通空格(您可以复制非破坏性来自空间的空间。)