01/10/2018, 16:02

Câu hỏi về hàm open() trong python

Đây là code của mình:

import sys
script, input_encoding, error = sys.argv

def main(language_file,encode,errors):
    line = language_file.readline()

    if line:
        print_line(line,encode,errors)
        return main(language_file,encode,errors)

def print_line(line,encode,errors):

    next_lang = line.strip()
    raw_bytes = next_lang.encode(encode, errors = errors)
    cooked_string = raw_bytes.decode(encode , errors = errors)

    print(raw_bytes, "<===>", cooked_string)

languages = open("languages.txt", encoding = "utf-8")
main(languages, input_encoding,error)

Mình đang học về cách encode string và decode byte,tuy nhiên mình không hiểu tại sao mình lại cần "encoding = utf-8 " trong hàm open() ???.Mong mọi người giúp đỡ ạ.

HK boy viết 18:17 ngày 01/10/2018

Đọc ở đây

https://docs.python.org/3/library/functions.html#open

In text mode, if encoding is not specified the encoding used is platform dependent: …

Nếu bạn không thêm encoding='utf8' thì file sẽ được mở theo encoding của hệ điều hành, mà đối với 1 số hệ điều hành (vd: Windows) encoding của hệ điều hành đó không phải utf-8 => dễ dẫn tới không đọc được kí tự utf-8 trong file.

Bài liên quan
0