2016-10-30 12 views
5

net45 में के लिए Shift-JIS एन्कोडिंग, Encoding.GetEncoding("Shift-JIS") ठीक काम करता है, लेकिन netstandard तहत फेंक देता है:एक netstandard पुस्तकालय

System.ArgumentException: 'Shift-JIS' एक समर्थित एन्कोडिंग नाम नहीं है। कस्टम एन्कोडिंग को परिभाषित करने के बारे में जानकारी के लिए, एन्कोडिंग के लिए प्रलेखन देखें। रजिस्ट्रारप्रदाता विधि।

प्रलेखन यह को संदर्भित करता है UWP के तहत नेट कोर मूल निवासी के लिए CodePagesEncodingProvider के माध्यम से समर्थन है, लेकिन netstandard साथ सामान्य उपयोग के लिए कुछ भी नहीं है का उल्लेख है।

तो, क्या netstandard लाइब्रेरी के भीतर Shift-JIS एन्कोडिंग का उपयोग करना संभव है?

+0

CodePagesEncodingProvider System.Text.Encoding.CodePages पैकेज के साथ आता है जो netstandard (https://github.com/dotnet/corefx/blob/master/pkg/NETStandard.Library/NETStandard.Library.packages का हिस्सा नहीं है। लक्ष्य), लेकिन नेटकोर का हिस्सा है, इसलिए मुझे लगता है कि उत्तर नहीं है, जब तक कि आप अपना स्वयं का एन्कोडिंग और एन्कोडिंगप्रोवाइडर नहीं लिखते। System.Text.Encoding.CodePages नेटस्टैन्डर्ड का हिस्सा नहीं है, मेरा मानना ​​है, क्योंकि यह आज विंडोज एपीआई/संसाधनों पर निर्भर करता है। –

उत्तर

4

हां, यह संभव है। project.json में System.Text.Encoding.CodePages पैकेज संदर्भ:

Encoding.GetEncoding("Shift-JIS") 
:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 

और आप के साथ जाने के लिए तैयार हैं:

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

निम्नलिखित कोड आह्वान पहले Shift-JIS एन्कोडिंग हो रही करने के लिए

अद्यतन:

System.Text.Encoding.CodePagesNETStandard.Library 1.6 package में बंडल नहीं किया गया है, लेकिन netstandard क्लास लाइब्रेरी से System.Text.Encoding.CodePages को संदर्भित करने में कोई समस्या नहीं है (जब तक आपकी कक्षा लाइब्रेरी netstandard1.2 या उससे कम तक लक्षित न हो)।

यहां एक sample solution with the code है। एक कक्षा पुस्तकालय है, जो netstandard1.3 और एक उपभोग करने वाला कंसोल एप्लिकेशन लक्षित करता है, जो netcoreapp1.0 को लक्षित करता है और कक्षा पुस्तकालय का संदर्भ देता है। कक्षा पुस्तकालय में Shift-JIS एन्कोडिंग के पुनर्प्राप्ति के अनुरूप कोड शामिल है। इसे अन्य ढांचे को लक्षित करने वाले ऐप्स से भी संदर्भित और उपभोग किया जा सकता है।

+0

साइमन मॉरीयर ने पहले ही इसकी ओर इशारा किया है। यह .NET कोर द्वारा समर्थित है, लेकिन 'netstandard' नहीं है। मैं 'नेटस्टैंडर्ड' लाइब्रेरी को संलेखित कर रहा हूं, इसलिए इसका उपयोग नहीं कर सकता। प्रश्न के शीर्षक को और स्पष्ट करने के लिए मैं अपडेट कर दूंगा, हालांकि इस सवाल में समझाया गया था। इसके अलावा मैंने पहले ही आपके प्रश्न में आपके उत्तर का उल्लेख किया है। –

+0

"यह समर्थित नहीं है" ऐसा लगता है कि एसओ में कोई भी कभी समझ में नहीं आता है। तीव्र पढ़ने की समझ की समस्याएं हल करने में आपकी समस्या नहीं हैं, वे वास्तविक समस्या नहीं हैं। अच्छा उत्तर। –

+0

@ ड्रू नोएक्स मैंने आपकी टिप्पणी को ध्यान में रखते हुए उत्तर अपडेट किया है। – Deilan

संबंधित मुद्दे