11 มีนาคม 2561

Published มีนาคม 11, 2561 by with 1 comment

ทำอย่างไร? ถ้าเปิดไฟล์ภาษาไทยแล้วเจอ UnicodeDecodeError บน Windows ด้วย Python

เคยไหมกับปัญหาการเปิดไฟล์ภาษาไทยด้วย Python บน Windows หรืออื่น ๆ แล้วเจอกับปัญหา
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9a in position 55: character maps to <undefined>

ทั้ง ๆ ที่ใช้ Python 3 บน Windows และทั้งที่ไฟล์เป็น UTF-8 ?
บทความนี้จะพาไปเขียรโค้ดเพื่อป้องกันปัญหาเปิดไฟล์ภาษาไทยแล้วเจอ UnicodeDecodeError บน Windows ด้วยภาษา Python กันครับ

ทางป้องกัน จากที่ใช้คำสั่ง open ในการเปิดไฟล์ เช่น
f = open(fileopen, 'r')
ให้เปลี่ยนไปใช้ไลบารี codecs ก่อนใช้งานให้
import codecs
แล้วใส่พารามิเตอร์ encoding = 'utf8'
เช่น
f = open(fileopen, 'r',encoding='utf8')
เพียงเท่านี้ก็หมดปัญหาเปิดไฟล์ภาษาไทยแล้วเจอ UnicodeDecodeError ด้วย Python ไม่ว่าจะเป็น Windows , Linux หรือ MacOS ก็หมดปัญหาแล้ว

1 ความคิดเห็น:

แสดงความคิดเห็นได้ครับ :)