Hướng dẫn how do you decode bytes in python? - làm thế nào để bạn giải mã byte trong python?

Mã hóa chuỗi python ()

Chức năng Python String Encode () được sử dụng để mã hóa chuỗi bằng mã hóa được cung cấp. Hàm này trả về đối tượng byte. Nếu chúng tôi không cung cấp mã hóa, mã hóa UTF-8 được sử dụng làm mặc định.

Python Byte Decode ()

Hàm giải mã byte python () được sử dụng để chuyển đổi byte thành đối tượng chuỗi. Cả hai chức năng này cho phép chúng tôi chỉ định sơ đồ xử lý lỗi để sử dụng cho các lỗi mã hóa/giải mã. Mặc định là ‘nghiêm ngặt có nghĩa là các lỗi mã hóa làm tăng một unicodeEncodeError. Một số giá trị có thể khác là ‘bỏ qua,‘ thay thế và ‘xmlcharrefreplace. Chúng ta hãy xem xét một ví dụ đơn giản về các hàm giải mã () () Chuỗi () Chuỗi ().

str_original = 'Hello'

bytes_encoded = str_original.encode(encoding='utf-8')
print(type(bytes_encoded))

str_decoded = bytes_encoded.decode()
print(type(str_decoded))

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)

Output:



Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True

Ví dụ trên không thể hiện rõ ràng việc sử dụng mã hóa. Hãy cùng xem xét một ví dụ khác, nơi chúng tôi sẽ nhận được đầu vào từ người dùng và sau đó mã hóa nó. Chúng tôi sẽ có một số ký tự đặc biệt trong chuỗi đầu vào được nhập bởi người dùng.

str_original = input('Please enter string data:\n')

bytes_encoded = str_original.encode()

str_decoded = bytes_encoded.decode()

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)

Đầu ra:

Hướng dẫn how do you decode bytes in python? - làm thế nào để bạn giải mã byte trong python?

Please enter string data:
aåb∫cçd∂e´´´ƒg©1¡
Encoded bytes = b'a\xc3\xa5b\xe2\x88\xabc\xc3\xa7d\xe2\x88\x82e\xc2\xb4\xc2\xb4\xc2\xb4\xc6\x92g\xc2\xa91\xc2\xa1'
Decoded String = aåb∫cçd∂e´´´ƒg©1¡
str_original equals str_decoded = True

Bạn có thể kiểm tra toàn bộ tập lệnh Python và nhiều ví dụ về Python từ Kho lưu trữ GitHub của chúng tôi.

Tham khảo: str.encode () API Doc, byte.decode () API Doc

Tôi chưa quen với Python3, đến từ Python2, và tôi hơi bối rối với các nguyên tắc cơ bản của Unicode. Tôi đã đọc một số bài viết tốt, điều đó làm cho tất cả rõ ràng hơn nhiều, tuy nhiên tôi thấy có 2 phương pháp trên Python 3, có xử lý mã hóa và giải mã và tôi không chắc chắn nên sử dụng phương pháp nào.

Vì vậy, ý tưởng trong Python 3 là, mỗi chuỗi là Unicode và có thể được mã hóa và lưu trữ trong byte, hoặc được giải mã trở lại thành chuỗi Unicode một lần nữa.

Nhưng có 2 cách để làm điều đó:



Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True
7 sẽ tạo ra


Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True
8, nhưng


Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True
9 cũng vậy. Và
str_original = input('Please enter string data:\n')

bytes_encoded = str_original.encode()

str_decoded = bytes_encoded.decode()

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)
0 dường như làm điều tương tự như
str_original = input('Please enter string data:\n')

bytes_encoded = str_original.encode()

str_decoded = bytes_encoded.decode()

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)
1.


Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True
7 will generate


Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True
8, but so does


Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True
9.
And
str_original = input('Please enter string data:\n')

bytes_encoded = str_original.encode()

str_decoded = bytes_encoded.decode()

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)
0 seems to do the same thing as
str_original = input('Please enter string data:\n')

bytes_encoded = str_original.encode()

str_decoded = bytes_encoded.decode()

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)
1.

Bây giờ câu hỏi của tôi là, tại sao có 2 phương pháp dường như làm điều tương tự, và tốt hơn các phương pháp khác (và tại sao?) Tôi đã cố gắng tìm câu trả lời cho điều này trên Google, nhưng không có may mắn.

>>> original = '27岁少妇生孩子后变老'
>>> type(original)

>>> encoded = original.encode('utf-8')
>>> print(encoded)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> type(encoded)

>>> encoded2 = bytes(original, 'utf-8')
>>> print(encoded2)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> type(encoded2)

>>> print(encoded+encoded2)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x8127\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> decoded = encoded.decode('utf-8')
>>> print(decoded)
27岁少妇生孩子后变老
>>> decoded2 = str(encoded2, 'utf-8')
>>> print(decoded2)
27岁少妇生孩子后变老
>>> type(decoded)

>>> type(decoded2)

>>> print(str(b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81', 'utf-8'))
27岁少妇生孩子后变老
>>> print(b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'.decode('utf-8'))
27岁少妇生孩子后变老

Giới thiệu

Trong bài viết này, chúng ta sẽ xem xét cách chuyển đổi byte thành một chuỗi trong Python. Đến cuối bài viết này, bạn sẽ có một ý tưởng rõ ràng về những loại này là gì và làm thế nào để xử lý dữ liệu một cách hiệu quả bằng cách sử dụng chúng.

Tùy thuộc vào phiên bản Python bạn đang sử dụng, nhiệm vụ này sẽ khác nhau. Mặc dù Python 2 đã kết thúc cuộc đời, nhiều dự án vẫn sử dụng nó, vì vậy chúng tôi sẽ bao gồm cả hai phương pháp Python 2 và Python 3.

Chuyển đổi byte thành chuỗi trong Python 3

Kể từ Python 3, cách làm ascii cũ phải đi, và Python trở nên hoàn toàn đơn giản.

Điều này có nghĩa là chúng tôi đã mất loại unicode rõ ràng:

str_original = input('Please enter string data:\n')

bytes_encoded = str_original.encode()

str_decoded = bytes_encoded.decode()

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)
2 - Mỗi chuỗi là
str_original = input('Please enter string data:\n')

bytes_encoded = str_original.encode()

str_decoded = bytes_encoded.decode()

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)
2!

Để phân biệt các chuỗi này với các bytests cũ tốt, chúng tôi được giới thiệu với một nhà xác định mới cho chúng -

str_original = input('Please enter string data:\n')

bytes_encoded = str_original.encode()

str_decoded = bytes_encoded.decode()

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)
4.

Điều này đã được thêm vào Python 2.6, nhưng nó không phục vụ mục đích thực sự nào ngoài việc chuẩn bị cho Python 3 vì tất cả các chuỗi đều là bytestrings trong 2.6.

Bytestrings trong Python 3 chính thức được gọi là

str_original = input('Please enter string data:\n')

bytes_encoded = str_original.encode()

str_decoded = bytes_encoded.decode()

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)
5, một chuỗi số nguyên bất biến trong phạm vi 0

Chuyển đổi byte thành chuỗi bằng giải mã ()

Chúng ta hãy xem cách chúng ta có thể chuyển đổi byte thành một chuỗi, sử dụng phương thức

str_original = input('Please enter string data:\n')

bytes_encoded = str_original.encode()

str_decoded = bytes_encoded.decode()

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)
9 tích hợp cho lớp
str_original = input('Please enter string data:\n')

bytes_encoded = str_original.encode()

str_decoded = bytes_encoded.decode()

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)
5:

>>> b = b"Lets grab a \xf0\x9f\x8d\x95!"
# Let's check the type
>>> type(b)
<class 'bytes'>

# Now, let's decode/convert them into a string
>>> s = b.decode('UTF-8')
>>> s
"Let's grab a 🍕!"

Chuyển định dạng mã hóa, chúng tôi đã giải mã đối tượng

str_original = input('Please enter string data:\n')

bytes_encoded = str_original.encode()

str_decoded = bytes_encoded.decode()

print('Encoded bytes =', bytes_encoded)
print('Decoded String =', str_decoded)
print('str_original equals str_decoded =', str_original == str_decoded)
5 thành một chuỗi và in nó.

Chuyển đổi byte thành chuỗi với codecs

Ngoài ra, chúng tôi cũng có thể sử dụng mô-đun

Please enter string data:
aåb∫cçd∂e´´´ƒg©1¡
Encoded bytes = b'a\xc3\xa5b\xe2\x88\xabc\xc3\xa7d\xe2\x88\x82e\xc2\xb4\xc2\xb4\xc2\xb4\xc6\x92g\xc2\xa91\xc2\xa1'
Decoded String = aåb∫cçd∂e´´´ƒg©1¡
str_original equals str_decoded = True
2 tích hợp cho mục đích này:

>>> import codecs
>>> b = b'Lets grab a \xf0\x9f\x8d\x95!'

>>> codecs.decode(b, 'UTF-8')
"Let's grab a 🍕!"

Tuy nhiên, bạn không thực sự cần phải vượt qua tham số mã hóa

>>> codecs.decode(b)
"Let's grab a 🍕!"

Chuyển đổi byte thành chuỗi bằng str ()

Cuối cùng, bạn có thể sử dụng hàm

Please enter string data:
aåb∫cçd∂e´´´ƒg©1¡
Encoded bytes = b'a\xc3\xa5b\xe2\x88\xabc\xc3\xa7d\xe2\x88\x82e\xc2\xb4\xc2\xb4\xc2\xb4\xc6\x92g\xc2\xa91\xc2\xa1'
Decoded String = aåb∫cçd∂e´´´ƒg©1¡
str_original equals str_decoded = True
3, chấp nhận các giá trị khác nhau và chuyển đổi chúng thành các chuỗi:

>>> b = b'Lets grab a \xf0\x9f\x8d\x95!'
>>> str(b, 'UTF-8')
"Let's grab a 🍕!"

Đảm bảo cung cấp đối số mã hóa cho

Please enter string data:
aåb∫cçd∂e´´´ƒg©1¡
Encoded bytes = b'a\xc3\xa5b\xe2\x88\xabc\xc3\xa7d\xe2\x88\x82e\xc2\xb4\xc2\xb4\xc2\xb4\xc6\x92g\xc2\xa91\xc2\xa1'
Decoded String = aåb∫cçd∂e´´´ƒg©1¡
str_original equals str_decoded = True
3, nếu không, bạn có thể nhận được một số kết quả bất ngờ:

>>> str(b)
b'Lets grab a \xf0\x9f\x8d\x95!'

Điều này đưa chúng ta đến mã hóa một lần nữa. Nếu bạn chỉ định mã hóa sai, trường hợp tốt nhất là chương trình của bạn bị sập vì nó không thể giải mã dữ liệu. Ví dụ: nếu chúng tôi đã thử sử dụng chức năng

Please enter string data:
aåb∫cçd∂e´´´ƒg©1¡
Encoded bytes = b'a\xc3\xa5b\xe2\x88\xabc\xc3\xa7d\xe2\x88\x82e\xc2\xb4\xc2\xb4\xc2\xb4\xc6\x92g\xc2\xa91\xc2\xa1'
Decoded String = aåb∫cçd∂e´´´ƒg©1¡
str_original equals str_decoded = True
3 với
Please enter string data:
aåb∫cçd∂e´´´ƒg©1¡
Encoded bytes = b'a\xc3\xa5b\xe2\x88\xabc\xc3\xa7d\xe2\x88\x82e\xc2\xb4\xc2\xb4\xc2\xb4\xc6\x92g\xc2\xa91\xc2\xa1'
Decoded String = aåb∫cçd∂e´´´ƒg©1¡
str_original equals str_decoded = True
6, chúng tôi sẽ được chào đón:



Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True
0

Điều này thậm chí còn quan trọng hơn khi Python 3 thích giả định Unicode - vì vậy nếu bạn đang làm việc với các tệp hoặc nguồn dữ liệu sử dụng mã hóa tối nghĩa, hãy đảm bảo chú ý thêm.

Chuyển đổi byte thành chuỗi trong Python 2

Trong Python 2, một bó byte và một chuỗi thực tế là cùng một thứ - các chuỗi là các đối tượng bao gồm các ký tự dài 1 byte, có nghĩa là mỗi ký tự có thể lưu trữ 256 giá trị. Đó là lý do tại sao chúng đôi khi được gọi là bytestrings.bytestrings.

Điều này thật tuyệt khi làm việc với dữ liệu byte - chúng tôi chỉ tải nó vào một biến và chúng tôi đã sẵn sàng để in:



Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True
1

Sử dụng các ký tự unicode trong bytestrings không thay đổi hành vi này một chút: mặc dù:



Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True
2

Chuyển đổi byte thành unicode (Python 2)

Ở đây, chúng ta sẽ phải sử dụng loại ____37 của Python 2, được giả định và tự động sử dụng trong Python 3. Điều này lưu trữ các chuỗi dưới dạng một loạt các điểm mã, thay vì byte.

Please enter string data:
aåb∫cçd∂e´´´ƒg©1¡
Encoded bytes = b'a\xc3\xa5b\xe2\x88\xabc\xc3\xa7d\xe2\x88\x82e\xc2\xb4\xc2\xb4\xc2\xb4\xc6\x92g\xc2\xa91\xc2\xa1'
Decoded String = aåb∫cçd∂e´´´ƒg©1¡
str_original equals str_decoded = True
8 đại diện cho các byte là số HEX hai chữ số như Python không biết cách đại diện cho chúng dưới dạng các ký tự ASCII:



Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True
3

Như bạn có thể thấy ở trên, chuỗi Unicode chứa

Please enter string data:
aåb∫cçd∂e´´´ƒg©1¡
Encoded bytes = b'a\xc3\xa5b\xe2\x88\xabc\xc3\xa7d\xe2\x88\x82e\xc2\xb4\xc2\xb4\xc2\xb4\xc6\x92g\xc2\xa91\xc2\xa1'
Decoded String = aåb∫cçd∂e´´´ƒg©1¡
str_original equals str_decoded = True
9 - một ký tự thoát ra Unicode mà thiết bị đầu cuối của chúng tôi bây giờ biết cách in ra như một lát bánh pizza! Cài đặt điều này dễ dàng như sử dụng bộ xác định
>>> original = '27岁少妇生孩子后变老'
>>> type(original)

>>> encoded = original.encode('utf-8')
>>> print(encoded)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> type(encoded)

>>> encoded2 = bytes(original, 'utf-8')
>>> print(encoded2)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> type(encoded2)

>>> print(encoded+encoded2)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x8127\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> decoded = encoded.decode('utf-8')
>>> print(decoded)
27岁少妇生孩子后变老
>>> decoded2 = str(encoded2, 'utf-8')
>>> print(decoded2)
27岁少妇生孩子后变老
>>> type(decoded)

>>> type(decoded2)

>>> print(str(b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81', 'utf-8'))
27岁少妇生孩子后变老
>>> print(b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'.decode('utf-8'))
27岁少妇生孩子后变老
0 trước giá trị của bytestring.

Vì vậy, làm thế nào để tôi chuyển đổi giữa hai?

Kiểm tra hướng dẫn thực hành của chúng tôi, thực tế để học Git, với các thực hành tốt nhất, các tiêu chuẩn được công nghiệp chấp nhận và bao gồm bảng gian lận. Ngừng các lệnh git googling và thực sự tìm hiểu nó!

Bạn có thể nhận được chuỗi unicode bằng cách giải mã bytestring của bạn. Điều này có thể được thực hiện bằng cách xây dựng một đối tượng Unicode, cung cấp bytestring và một chuỗi chứa tên mã hóa dưới dạng đối số hoặc bằng cách gọi

>>> original = '27岁少妇生孩子后变老'
>>> type(original)

>>> encoded = original.encode('utf-8')
>>> print(encoded)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> type(encoded)

>>> encoded2 = bytes(original, 'utf-8')
>>> print(encoded2)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> type(encoded2)

>>> print(encoded+encoded2)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x8127\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> decoded = encoded.decode('utf-8')
>>> print(decoded)
27岁少妇生孩子后变老
>>> decoded2 = str(encoded2, 'utf-8')
>>> print(decoded2)
27岁少妇生孩子后变老
>>> type(decoded)

>>> type(decoded2)

>>> print(str(b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81', 'utf-8'))
27岁少妇生孩子后变老
>>> print(b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'.decode('utf-8'))
27岁少妇生孩子后变老
1 trên một bytestring.

Chuyển đổi byte thành chuỗi bằng Decode () (Python 2)

Bạn cũng có thể sử dụng

>>> original = '27岁少妇生孩子后变老'
>>> type(original)

>>> encoded = original.encode('utf-8')
>>> print(encoded)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> type(encoded)

>>> encoded2 = bytes(original, 'utf-8')
>>> print(encoded2)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> type(encoded2)

>>> print(encoded+encoded2)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x8127\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> decoded = encoded.decode('utf-8')
>>> print(decoded)
27岁少妇生孩子后变老
>>> decoded2 = str(encoded2, 'utf-8')
>>> print(decoded2)
27岁少妇生孩子后变老
>>> type(decoded)

>>> type(decoded2)

>>> print(str(b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81', 'utf-8'))
27岁少妇生孩子后变老
>>> print(b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'.decode('utf-8'))
27岁少妇生孩子后变老
2 từ mô -đun
Please enter string data:
aåb∫cçd∂e´´´ƒg©1¡
Encoded bytes = b'a\xc3\xa5b\xe2\x88\xabc\xc3\xa7d\xe2\x88\x82e\xc2\xb4\xc2\xb4\xc2\xb4\xc6\x92g\xc2\xa91\xc2\xa1'
Decoded String = aåb∫cçd∂e´´´ƒg©1¡
str_original equals str_decoded = True
2.



Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True
4

Chuyển đổi byte thành chuỗi bằng cách sử dụng codecs (Python 2)

Hoặc, sử dụng mô -đun

Please enter string data:
aåb∫cçd∂e´´´ƒg©1¡
Encoded bytes = b'a\xc3\xa5b\xe2\x88\xabc\xc3\xa7d\xe2\x88\x82e\xc2\xb4\xc2\xb4\xc2\xb4\xc6\x92g\xc2\xa91\xc2\xa1'
Decoded String = aåb∫cçd∂e´´´ƒg©1¡
str_original equals str_decoded = True
2:



Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True
5

Hãy chú ý đến mã hóa của bạn

Một lời cảnh báo ở đây - byte có thể được giải thích khác nhau trong các mã hóa khác nhau. Với khoảng 80 mã hóa khác nhau có sẵn ngoài hộp, có thể không dễ để biết nếu bạn có đúng!80 different encodings available out of the box, it might not be easy to know if you've got the right one!



Encoded bytes = b'Hello'
Decoded String = Hello
str_original equals str_decoded = True
6

Thông báo ban đầu là

>>> original = '27岁少妇生孩子后变老'
>>> type(original)

>>> encoded = original.encode('utf-8')
>>> print(encoded)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> type(encoded)

>>> encoded2 = bytes(original, 'utf-8')
>>> print(encoded2)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> type(encoded2)

>>> print(encoded+encoded2)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x8127\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> decoded = encoded.decode('utf-8')
>>> print(decoded)
27岁少妇生孩子后变老
>>> decoded2 = str(encoded2, 'utf-8')
>>> print(decoded2)
27岁少妇生孩子后变老
>>> type(decoded)

>>> type(decoded2)

>>> print(str(b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81', 'utf-8'))
27岁少妇生孩子后变老
>>> print(b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'.decode('utf-8'))
27岁少妇生孩子后变老
5 hoặc
>>> original = '27岁少妇生孩子后变老'
>>> type(original)

>>> encoded = original.encode('utf-8')
>>> print(encoded)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> type(encoded)

>>> encoded2 = bytes(original, 'utf-8')
>>> print(encoded2)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> type(encoded2)

>>> print(encoded+encoded2)
b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x8127\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'
>>> decoded = encoded.decode('utf-8')
>>> print(decoded)
27岁少妇生孩子后变老
>>> decoded2 = str(encoded2, 'utf-8')
>>> print(decoded2)
27岁少妇生孩子后变老
>>> type(decoded)

>>> type(decoded2)

>>> print(str(b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81', 'utf-8'))
27岁少妇生孩子后变老
>>> print(b'27\xe5\xb2\x81\xe5\xb0\x91\xe5\xa6\x87\xe7\x94\x9f\xe5\xad\xa9\xe5\xad\x90\xe5\x90\x8e\xe5\x8f\x98\xe8\x80\x81'.decode('utf-8'))
27岁少妇生孩子后变老
6 và cả hai dường như là chuyển đổi hợp lệ.

Sự kết luận

Là lập trình viên, có một số điều chúng ta phải liên tục nghĩ đến và tích cực chuẩn bị để tránh những cạm bẫy. Điều này đặc biệt đúng ở cấp độ thấp hơn, nơi chúng ta hiếm khi đi khi chúng ta sử dụng một ngôn ngữ cấp cao như Python làm trình điều khiển hàng ngày của chúng ta.

Những thứ như ký tự, mã hóa và nhị phân ở đó để nhắc nhở chúng ta rằng công việc của chúng ta là mã hóa - mã hóa suy nghĩ của chúng ta thành các giải pháp làm việc. Rất may, rất nhiều suy nghĩ này trở thành một phần của thói quen của chúng tôi sau một vài vòng tại bàn phím.code - to encode our thoughts into working solutions. Thankfully, a lot of this thinking becomes part of our routine after a few rounds at the keyboard.

Trong bài viết này, chúng tôi đã đi qua cách chuyển đổi byte thành chuỗi trong Python.

Làm thế nào để bạn giải mã byte cho một chuỗi trong python?

Các cách khác nhau để chuyển đổi byte thành chuỗi trong Python:..
Sử dụng phương thức decode () ..
Sử dụng hàm str () ..
Sử dụng codec. Phương thức giải mã () ..
Sử dụng map () mà không sử dụng tiền tố B ..
Sử dụng gấu trúc để chuyển đổi byte thành chuỗi ..

Làm thế nào để bạn giải mã dữ liệu trong Python?

Decode () là một phương thức được chỉ định trong các chuỗi trong Python 2. Phương pháp này được sử dụng để chuyển đổi từ một sơ đồ mã hóa, trong đó chuỗi đối số được mã hóa thành sơ đồ mã hóa mong muốn.Điều này hoạt động đối diện với mã hóa.Nó chấp nhận mã hóa của chuỗi mã hóa để giải mã nó và trả về chuỗi gốc. is a method specified in Strings in Python 2. This method is used to convert from one encoding scheme, in which argument string is encoded to the desired encoding scheme. This works opposite to the encode. It accepts the encoding of the encoding string to decode it and returns the original string.

Làm thế nào để bạn truy cập byte trong Python?

Hàm Python Byte () chuyển đổi một đối tượng thành đối tượng đại diện byte bất biến của kích thước và dữ liệu đã cho ...
Cú pháp: Byte (SRC, ENC, ERR).
Thông số :.
Trả về: Đối tượng bất biến byte bao gồm các ký tự unicode 0-256 theo loại SRC ..

Làm cách nào để giải mã byte thành một chuỗi?

1. Hàm giải mã ().Đưa ra một đối tượng byte, bạn có thể sử dụng phương thức Decode () tích hợp để chuyển đổi byte thành một chuỗi.Bạn cũng có thể chuyển loại mã hóa cho chức năng này như một đối số.use the built-in decode() method to convert the byte to a string. You can also pass the encoding type to this function as an argument.