Unicode hay biểu diễn tiếng Việt vẫn luôn là ác mộng với các lập trình viên. Làm thế nào để đọc một file nội dung bên trong là tiếng việt mà không bị lỗi ?
Các bạn sẽ nói: Python3 hỗ trợ unicode tự động rồi còn gì. Chuẩn luôn. Nhưng đây là những gì mà tôi đã gặp khi lập trình Python3 đọc file trên Window.
Nội dung file text: –> Filetext.txt
Xin chào
Tôi là file text
Tạm biệt
Đoạn code Python đọc ra nội dung file này:
my_file = open('E:\\Filetext.txt','r')
string = my_file.read()
print(string)
my_file.close()
Và đây là những thứ mà tôi nhận được:
ÿþXin chào
Tôi là file text
T¡m biÇt
File của chúng ta sử dụng UTF-8 đúng không? Vậy dùng encoding=’utf-8’ làm tham số xem sao nhé.
my_file = open('E:\\Filetext.txt','r', encoding='utf-8')
string = my_file.read()
print(string)
my_file.close()
---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-2-ec70efdf7a39> in <module>()
1 my_file = open('E:\\Filetext.txt','r', encoding='utf-8')
----> 2 string = my_file.read()
3 print(string)
4 my_file.close()
C:\ProgramData\Anaconda3\lib\codecs.py in decode(self, input, final)
319 # decode input (taking the buffer into account)
320 data = self.buffer + input
--> 321 (result, consumed) = self._buffer_decode(data, self.errors, final)
322 # keep undecoded input until the next call
323 self.buffer = data[consumed:]
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Như này là như nào ??? giờ phải làm sao đây ??? Sau một hồi search google thì đây là cách giải quyết
my_file = open('E:\\Filetext.txt','r', encoding='utf-16')
string = my_file.read()
print(string)
my_file.close()
Xin chào
Tôi là file text
Tạm biệt