2016-10-30 6 views
5

In net45, Encoding.GetEncoding("Shift-JIS") funktioniert gut, aber unter netstandard es wirft:Shift-JIS-Codierung für eine netstandard Bibliothek

System.ArgumentException: 'Shift-JIS' wird nicht unterstützt kodiert Namen. Informationen zum Definieren einer benutzerdefinierten Codierung finden Sie in der Dokumentation zur Encoding.RegisterProvider-Methode.

Die Dokumentation es bezieht erwähnt Unterstützung über CodePagesEncodingProvider für .NET Core-Mutter unter UWP, aber nichts für den allgemeinen Gebrauch mit netstandard.

Also ist es möglich, Shift-JIS-Codierung innerhalb einer netstandard-Bibliothek zu verwenden?

+0

CodePagesEncodingProvider wird mit dem System.Text.Encoding.CodePages-Paket geliefert, das nicht Teil des Netzwerkstandards ist (https://github.com/dotnet/corefx/blob/master/pkg/NETStandard.Library/NETStandard.Library.packages. Ziele), aber ist Teil von netcore, also denke ich, die Antwort ist nein, es sei denn, Sie schreiben Ihre eigenen Encoding und EncodingProvider. Der Grund, warum System.Text.Encoding.CodePages nicht Teil von netstandard ist, ist, glaube ich, weil es heute auf Windows API/Ressourcen beruht. –

Antwort

4

Ja, es ist möglich. Referenz System.Text.Encoding.CodePages Paket in project.json:

"System.Text.Encoding.CodePages": "4.0.1" 

Rufen Sie den folgenden Code vor bekommen die Shift-JIS-Codierung:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 

Und du bist gut zu gehen mit:

Encoding.GetEncoding("Shift-JIS") 

UPDATE:

System.Text.Encoding.CodePages ist nicht in NETStandard.Library 1.6 package gebündelt, aber es gibt kein Problem, System.Text.Encoding.CodePages von Ihrer Klassenbibliothek netstandard zu referenzieren (bis Ihre Klassenbibliothek Ziele netstandard1.2 oder niedriger zielt).

Hier ist ein sample solution with the code. Es gibt eine Klassenbibliothek, die auf netstandard1.3 und eine konsumierende Konsolenanwendung zielt, die auf netcoreapp1.0 abzielt und auf die Klassenbibliothek verweist. Die Klassenbibliothek enthält den Code, der dem Abruf der Codierung Shift-JIS entspricht. Es kann auch auf Apps verwiesen werden, die auf andere Frameworks ausgerichtet sind.

+0

Simon Mourier wies bereits darauf hin. Es wird von .NET Core unterstützt, aber nicht von "netstandard". Ich erstelle eine 'netstandard'-Bibliothek, also kann ich diese nicht verwenden. Ich werde den Titel der Frage aktualisieren, um klarer zu sein, obwohl dies in der Frage erklärt wurde. Außerdem habe ich deine Antwort bereits in meiner Frage erwähnt. –

+0

"Es wird nicht unterstützt" scheint eine Phrase zu sein, die niemand bei SO jemals zu verstehen scheint. Akute Leseverständnisprobleme sind nicht Ihr Problem zu lösen, sie sind keine wirklichen Probleme. Gute Antwort. –

+0

@Drew Noakes Ich habe die Antwort unter Berücksichtigung Ihres Kommentars aktualisiert. – Deilan

Verwandte Themen