การใช้ Code page Windows-874 ใน .NET Core

wk
1 min readMar 1, 2019

--

Code page ที่มาพร้อมกัน .NET Core จะไม่มี Windows-874 ติดมาด้วย

ตัวอย่าง

var encoding = System.Text.Encoding.GetEncoding(874);

โค้ดด้านบนจะเกิด Exception ดังนี้

System.NotSupportedException: No data is available for encoding 874. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.

วิธีแก้

1. ติดตั้งแพ็กเกจ System.Text.Encoding.CodePages

dotnet add package System.Text.Encoding.CodePages

2. Register ด้วยฟังก์ชัน Encoding.RegisterProvider() ดังนี้

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

จากนี้ จะสามารถใช้ฟังก์ชัน GetEncoding(874) ตามตัวอย่างด้านบน โดยการ Register นี้จะไม่มีผลกับฟังก์ชัน GetEncodings() โค้ดด้านล่างจะได้ผลลัพธ์เหมือนเดิม ไม่ว่าจะเรียกก่อนหรือหลังจาก Register ในข้อ 2

var numberOfEncoding = Encoding.GetEncodings().Length

--

--

No responses yet