Dieses Programm funktioniert einwandfrei, wenn es für .NET 4 kompiliert wurde, jedoch nicht, wenn es für .NET Core kompiliert wurde. Ich verstehe den Fehler bezüglich der Codierung nicht unterstützt, aber nicht, wie man ihn behebt.
Public Class Program
Public Shared Function Main(ByVal args As String()) As Integer
System.Text.Encoding.GetEncoding(1252)
End Function
End Class
Antworten:
Dazu müssen Sie die Instanz aus dem Paket registrieren .
CodePagesEncodingProvider
System.Text.Encoding.CodePages
Installieren Sie dazu das Paket System.Text.Encoding.CodePages :
dotnet add package System.Text.Encoding.CodePages
Dann können Sie (nach implizitem oder explizitem Ausführen
dotnet restore
) Folgendes aufrufen:Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var enc1252 = Encoding.GetEncoding(1252);
Wenn Sie nur diese eine Codepage benötigen, können Sie sie auch ohne Registrierung direkt abrufen:
var enc1252 = CodePagesEncodingProvider.Instance.GetEncoding(1252);
quelle
dotnet add package System.Text.Encoding.CodePages
?csproj
. Wenn Sie Visual Studio verwenden, können Sie anstelle dieses Befehls auch den Paket-Manager verwenden.NotSupportedException
.CodePagesEncodingProvider.Instance.GetEncoding
mit einer variablen Eingabe verwenden. docs.microsoft.com/en-us/dotnet/api/… sagt: "Sie sollten die EncodingProvider.GetEncoding-Überladungen nicht aufrufen." Grund könnte sein , dassEncodingProvider
Sie nicht jede Codierung geben, aber wahrscheinlich nur zusätzliche Codierungen (zB Sie nicht ISO-8859-1 Zeichensatz erhalten , wieCodePagesEncodingProvider.Instance.GetEncoding(28591)
gibtnull
).Bitte schreibe:
<ItemGroup> <PackageReference Include="System.Text.Encoding.CodePages" Version="4.3.0" /> </ItemGroup>
in csproj.
Schreiben Sie in der Paketkonsole 'dotnet restore' und stellen Sie Assemblys wieder her.
und mit diesem Code als Beispiel:
public class MyClass { static MyClass() { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); } }
quelle
public static Encoding Windows1252 => Encoding.GetEncoding(1252);