วิธีแก้ปัญหา unknown encoding: 874 ของ Python

ส่งต่อความรู้

วิธีแก้ปัญหา unknown encoding: 874 ของ Python

ผู้ที่ใช้ python หรือ Anaconda บน Windows หากจะรันโปรแกรม หรืออัพเดต module ต่างๆแล้วพบกับ error แบบนี้

   Fatal Python error: Py_Initialize: can’t initialize sys standard streams
   LookupError: unknown encoding: 874

หรือตอนเรียกโปรแกรมผ่าน Anaconda Navigator แล้วขึ้นประมาณนี้

 

บางท่านจะแนะนำให้ไปเปลี่ยนภาษาใน Region ของ Windows ให้เป็นภาษาอังกฤษ แล้วจะไม่ error ซึ่งก็แก้ปัญหาได้เช่นกัน แต่ไม่ใช่วิธัแก้ที่ต้นเหตุ และจะมีปัญหาอื่นๆตามมา เช่นโปรแกรมอื่นๆที่มีการแสดงภาษาไทยอาจแสดงผลผิดเพี้ยนไปหมด

ทีนี้มาดูสาเหตุที่แท้จริงกัน ถือว่าเป็น bug เล็กๆก็ได้ เนื่องจาก เกิดจาก ไม่มีการกำหนด aliases ให้ encoding ภาษาไทย (874)

ดังนั้นเพียงเข้าไปเพิ่มที่ไฟล์ aliases.py ใน folder \Lib\encodings\ ของ python

( เช่นใน Anaconda จะอยู่ที่โฟลเดอรฺ์ C:\Users\username\Anaconda3\Lib\encodings\ )

 

โดยเปิดไฟล์ aliases.py ด้วย text editor จะเห็นการกำหนด encoding เป็นรูปแบบตัวแปร dictionary

ให้เราลองไล่ดูไปตามตัวอักษร จะเห็นเป็นรูปบบ # cpXXX codec เรียงไปเรื่อยๆ

ให้ทำการเพิ่ม  2 บรรทัดนี้แทรกเข้าไป

# cp874 codec

   ‘874’                : ‘cp874’,

 

จะได้เป็นประมาณนี้

แล้วทำการ save จากนั้นก็จะไม่ error แล้วจ้า

 

 

sigmick

Software Developer, Data Engineer, and Technology Specialist

3 Replies to “วิธีแก้ปัญหา unknown encoding: 874 ของ Python

  1. Fatal Python error: init_sys_streams: can’t initialize sys standard streams
    LookupError: unknown encoding: 874

    Current thread 0x00001b20 (most recent call first):

    ทำแล้วไม่หายค่ะ ช่วยแนะนำหน่อย

Leave a Reply

Your email address will not be published. Required fields are marked *