这个程序在为.NET 4编译时工作正常,但在为.NET Core编译时也能正常工作.我理解不支持编码的错误,但不知道如何解决它.
Public Class Program
Public Shared Function Main(ByVal args As String()) As Integer
System.Text.Encoding.GetEncoding(1252)
End Function
End Class
Run Code Online (Sandbox Code Playgroud) 这让我发疯。我想读取许多使用 Windows-1252 编码的文本文件(位于我的项目目录之外),将它们编辑为字符串,然后写回这些文件,再次作为 Windows-1252。然而 Visual Studio 却不断生成 UTF-8 文件。
这是我的文件读取代码:
using (StreamReader sr = new StreamReader(fileName, Encoding.Default))
{
String s = sr.ReadToEnd();
return s;
}
Run Code Online (Sandbox Code Playgroud)
这是我的文件写入代码:
File.WriteAllText(fileName, joinedFileString, Encoding.Default);
Run Code Online (Sandbox Code Playgroud)
在这两者之间,我执行了各种编辑,包括添加、删除和 grep 换行符,但我认为这些可以通过在 File.WriteAllText 中指定编码来以正确的编码进行解析。请注意,我已在 Visual Studio 的“高级保存选项”中将默认编码更改为 1252。因此 Encoding.Default 应引用正确的编码。
但它不断将文件转换为 UTF-8!:-(
在Windows IIS上的.NET Core 2.0中,我正在将一个部分html文件读入字符串:
string sWelcomeContent = System.IO.File.ReadAllText(welcomepagePath, System.Text.Encoding.GetEncoding(1252));
Run Code Online (Sandbox Code Playgroud)
这很正常,但很少(去年发生过两次),我收到一个错误:System.NotSupportedException:没有数据可用于编码1252.
任何想法为什么会这样?