2016-06-16 4 views
24

Ce programme fonctionne très bien lorsqu'il est compilé pour .NET 4 mais lorsqu'il est compilé pour .NET Core. Je comprends l'erreur à propos de l'encodage non pris en charge mais pas comment le réparer..NET Core ne connaît pas Windows 1252, comment résoudre ce problème?

public class Program 
{ 
    public static int Main(string[] args) 
    { 
     System.Text.Encoding.GetEncoding(1252); 
    } 
} 
+0

C# est un artefact de VGM ici; le tag n'appartient pas. – Joshua

Répondre

41

Pour ce faire, vous devez register l'instance CodePagesEncodingProvider du paquet System.Text.Encoding.CodePages.

Pour ce faire, installez the System.Text.Encoding.CodePages package:

dotnet add package System.Text.Encoding.CodePages 

Ensuite (après implicitement ou en cours d'exécution explicitement dotnet restore) vous pouvez appeler:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 
var enc1252 = Encoding.GetEncoding(1252); 

Sinon, si vous avez seulement besoin que d'une page de code , vous pouvez l'obtenir directement, sans inscription:

var enc1252 = CodePagesEncodingProvider.Instance.GetEncoding(1252); 
2

S'il vous plaît écrire:

<ItemGroup> 
    <PackageReference Include="System.Text.Encoding.CodePages" Version="4.3.0" /> 
</ItemGroup> 

dans csproj. Ecrivez 'dotnet restore' dans la console du paquet, restaurez les assemblages.

et Wite ce code pour l'échantillon:

public class MyClass 
{ 
    static MyClass() 
    { 
     Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 
    } 
} 
+0

La version NET CORE pour cette question est 1.0 (comme cela devrait être évident à partir de la date); cette réponse ne fonctionne pas. – Joshua

+0

Je sais que c'était la mauvaise version (cela a fonctionné pour moi en 1.1, mais cela a fonctionné comme un charme.) Gracias amigo. – radpin