Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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# StreamReader.CurrentEncoding在运行巧克力或八达通时会有所不同_C#_Powershell_Azure_Octopus Deploy_Chocolatey - Fatal编程技术网

C# StreamReader.CurrentEncoding在运行巧克力或八达通时会有所不同

C# StreamReader.CurrentEncoding在运行巧克力或八达通时会有所不同,c#,powershell,azure,octopus-deploy,chocolatey,C#,Powershell,Azure,Octopus Deploy,Chocolatey,我有一个azure虚拟机,上面有很多文件。其中一些文件非常混乱,例如,包含UTF8 BOM和非UTF8字符,特别是智能引号,如下所示: <option ef="“Late”" /> 调用.ReadToEnd(),然后检查CurrentEncoding。如果我在powershell窗口中运行此进程,它会像预期的那样返回System.Text.asciencecoding,这是因为它使用了智能引号,并且在其他任何地方运行时都会这样做。如果我在巧克力包装内或通过octopus deplo

我有一个azure虚拟机,上面有很多文件。其中一些文件非常混乱,例如,包含UTF8 BOM和非UTF8字符,特别是智能引号,如下所示:

<option ef="“Late”" />
调用
.ReadToEnd()
,然后检查
CurrentEncoding
。如果我在powershell窗口中运行此进程,它会像预期的那样返回
System.Text.asciencecoding
,这是因为它使用了智能引号,并且在其他任何地方运行时都会这样做。如果我在巧克力包装内或通过octopus deploy运行它,
CurrentEncoding
等于
System.Text.UTF8Encoding


我之所以调用
.ReadToEnd()
,是因为执行读取操作将正确设置编码。巧克力和八达通有什么不同,它们正在制作
StreamReader
猜错编码?

你说“准确”是什么意思?编码方式是可变的。是什么让你认为它不准确?如果Chocolate将编码更改为UTF8,则您的进程将作为UTF8启动。@Tigran我知道这些文件都是ASCII码,因为除了通过我的新Chocolate软件包之外,在任何地方都会运行这些文件,它将它们检测为ASCII码,并将其转换为UTF8。@Gusman请查看我上面的评论和我的后期更新。只要文件没有BOM表,没有隐式编码,原始数据就可以以不同的方式进行解释。
StreamReader sr = new StreamReader(filename, Encoding.ASCII, true);