Dot-Net

用於網路標準庫的 Shift-JIS 編碼

  • June 9, 2018

net45,Encoding.GetEncoding("Shift-JIS")工作正常,但在netstandard它下面拋出:

System.ArgumentException:“Shift-JIS”不是受支持的編碼名稱。有關定義自定義編碼的資訊,請參閱 Encoding.RegisterProvider 方法的文件。

它引用的文件提到了通過CodePagesEncodingProviderUWP 下對 .NET Core Native 的支持,但對於netstandard.

那麼,是否可以在netstandard庫中使用 Shift-JIS 編碼?

對的,這是可能的。參考System.Text.Encoding.CodePages包中project.json

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

在獲取 Shift-JIS 編碼之前呼叫以下程式碼:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

你很適合:

Encoding.GetEncoding("Shift-JIS")

更新:

System.Text.Encoding.CodePages未捆綁在NETStandard.Library 1.6 包中,但從您的類庫中引用System.Text.Encoding.CodePages沒有問題netstandard(直到您的類庫目標netstandard1.2或更低)。

這是帶有程式碼的範例解決方案。有一個以類庫為目標的類庫和一個以類庫為目標和引用的netstandard1.3消費控制台應用程序。netcoreapp1.0類庫包含對應於檢索Shift-JIS編碼的程式碼。它也可以從針對其他框架的應用程序中引用和使用。

引用自:https://stackoverflow.com/questions/40331957