Về cơ bản tôi đã yêu cầu một trang web và nhận phản hồi byte: b'[{"geonameId:"703448"}..........'.
Tôi bị nhầm lẫn vì mặc dù nó thuộc loại byte, rất dễ đọc và xuất hiện một danh sách các json. Tôi biết rằng các phản ứng được mã hóa trong latin1 từ chạy r.encoding
mà trở về ISO-859-1
và tôi đã cố gắng giải mã nó, nhưng nó chỉ trả về một chuỗi rỗng. Dưới đây là những gì tôi có cho đến thời điểm này:Yêu cầu trả về byte và tôi không giải mã được
r = response.content
string = r.decode("ISO-8859-1")
print (string)
và đây là nơi nó in một dòng trống. Tuy nhiên khi tôi chạy
len(string)
tôi nhận được: trở lại 31023
Làm thế nào tôi có thể giải mã các byte mà không nhận lại một chuỗi rỗng?
trong python 2.x tiền tố b sẽ làm cho chuỗi kèm theo để trở thành một loại 'str' bạn có thể có một số ký tự được mã hóa đã ẩn ở đâu đó bên trong. Trên Python 3.x bạn sẽ nhận được một 'byte' chữ. tại sao bạn tin rằng bạn cần thực hiện bất kỳ mã hóa/giải mã nào? –
Bởi vì tôi cần phải phân tích cú pháp của json, và tôi đã thử lặp lại nó: với 'for i in range (len (nội dung)): in nội dung [i]' và nó chỉ in ra rất nhiều con số. –