Mã hóa UTF-8 Python

String là một kiểu dữ liệu phổ biến trong Python và được chúng ta sử dụng hàng ngày. Trong bài viết này, những điều cơ bản về mã hóa/giải mã chuỗi sẽ được giới thiệu để có thể giải tỏa sự nhầm lẫn của bạn trong lĩnh vực này. Ở cuối bài viết, hai phương pháp để tạo các giá trị băm duy nhất từ ​​​​các chuỗi có mã hóa/giải mã được giới thiệu, sẽ hữu ích cho công việc của bạn

Phía dưới,. write() mỗi lần ghi một chuỗi vào tệp đầu ra được chỉ định. Lần này, chúng ta phải mua, một danh sách các chuỗi, mà. writelines() viết ra cùng một lúc. Lưu ý rằng tất cả các chuỗi trong ví dụ đều có dấu ngắt dòng '\n' ở cuối. Không có nó, tất cả các chuỗi sẽ được in ra trên cùng một dòng, đó là điều đã xảy ra trong Hướng dẫn 13. Không giống như câu lệnh in in ra một chuỗi trên dòng mới của chính nó, các phương thức viết sẽ không xử lý ký tự xuống dòng -- bạn phải nhớ cung cấp '\n' nếu bạn muốn một chuỗi chiếm dòng của chính nó

Những cạm bẫy phổ biến

Mã hóa UTF-8 Python
File I/O nổi tiếng là một chướng ngại vật đối với các lập trình viên mới bắt đầu. Dưới đây là những cái phổ biến nhất

Lỗi "Không có tệp hoặc thư mục như vậy"

>>> f = open('mary-short.txt')
Traceback (most recent call last):
  File "", line 1, in 
IOError: [Errno 1] No such file or directory: 'mary-short.txt'

Bạn đang gặp lỗi này vì Python không thể định vị tệp để đọc. Đảm bảo rằng bạn đang cung cấp đúng đường dẫn và tên tệp. Đọc Đường dẫn tệp đầu tiên và CWD. Ngoài ra, hãy tham khảo this, this và this FAQ

Sự cố mã hóa "UnicodeDecodeError" có nghĩa là bạn gặp sự cố mã hóa tệp. Mỗi máy tính có mã hóa mặc định trên toàn hệ thống của riêng nó và tệp bạn đang cố mở được mã hóa bằng một thứ khác, rất có thể là một số phiên bản Unicode. Nếu điều này xảy ra, bạn nên chỉ định mã hóa bằng cách sử dụng khóa chuyển mã hóa='xxx' trong khi mở tệp. Nếu bạn không chắc nên sử dụng mã hóa nào, hãy thử 'utf-8', 'utf-16' và 'utf-32'

Toàn bộ nội dung tệp chỉ có thể được đọc MỘT LẦN mỗi lần mở Cả hai. đọc và. readlines() đi kèm với khái niệm con trỏ. Sau khi một trong hai lệnh được thực thi, con trỏ sẽ di chuyển đến cuối tệp, không còn gì để đọc trong đó. Do đó, khi nội dung tệp đã được đọc vào, một nỗ lực khác để đọc từ đối tượng tệp sẽ tạo ra một đối tượng dữ liệu trống. Nếu vì lý do nào đó phải đọc lại nội dung tệp thì phải đóng và mở lại tệp

Chỉ viết được kiểu string Các cách viết chỉ làm việc với string. . write() lấy một chuỗi đơn và. writelines() lấy một danh sách chỉ chứa các chuỗi. Dữ liệu loại không phải chuỗi trước tiên phải được ép thành loại chuỗi bằng cách sử dụng hàm str()

Tệp đầu ra của bạn trống Điều này xảy ra với tất cả mọi người. bạn viết cái gì đó ra, mở tập tin ra để xem, chỉ để thấy nó trống rỗng. Trong những thời điểm khác, nội dung tệp có thể không đầy đủ. Tò mò phải không? . BẠN QUÊN. đóng lại(). Viết ra xảy ra trong bộ đệm; . LUÔN NHỚ ĐÓNG ĐỐI TƯỢNG TẬP TIN CỦA BẠN

Phương thức encode() mã hóa chuỗi, sử dụng mã hóa đã chỉ định. Nếu không có mã hóa nào được chỉ định, UTF-8 sẽ được sử dụng


cú pháp

chuỗi. mã hóa(mã hóa=mã hóa, lỗi=lỗi)

Giá trị tham số

Mô tả tham sốMã hóaTùy chọn. Một chuỗi chỉ định mã hóa để sử dụng. Mặc định là lỗi UTF-8Tùy chọn. Một chuỗi chỉ định phương thức lỗi. Giá trị pháp lý là.
'backslashreplace'- sử dụng dấu gạch chéo ngược thay cho ký tự không thể mã hóa'ignore'- bỏ qua các ký tự không thể mã hóa'namereplace'- thay thế ký tự bằng văn bản giải thích ký tự'strict'- Mặc định, gây ra lỗi khi thất bại'replace'-

Thêm ví dụ

Ví dụ

Các ví dụ này sử dụng mã hóa ascii và một ký tự không thể mã hóa, hiển thị kết quả với các lỗi khác nhau

Trong bài viết này, chúng ta sẽ tìm hiểu cách chuyển đổi một chuỗi thành UTF-8 trong Python. Chúng tôi cũng sẽ sử dụng một số hàm tích hợp và một số mã tùy chỉnh. Trước tiên chúng ta hãy xem nhanh chuỗi trong Python là gì

Chuỗi Python

Chuỗi là một loại trong ngôn ngữ python giống như số nguyên, số float, boolean, v.v. Dữ liệu được bao quanh bởi dấu nháy đơn hoặc nháy kép được gọi là một chuỗi. Chuỗi còn được gọi là dãy ký tự

string1 = "apple"
string2 = "Preeti125"
string3 = "12345"
string4 = "pre@12"

UTF-8 trong Python là gì?

UTF là

string1 = "apple"
string2 = "Preeti125"
string3 = "12345"
string4 = "pre@12"
1 và '8' có nghĩa là các giá trị 8 bit được sử dụng trong mã hóa. Đây là một trong những định dạng mã hóa hiệu quả và thuận tiện nhất trong số các mã hóa khác nhau. Trong Python, Chuỗi theo mặc định ở định dạng utf-8, nghĩa là mỗi bảng chữ cái tương ứng với một điểm mã duy nhất. utf-8 mã hóa chuỗi Unicode thành byte. Người dùng nhận dữ liệu chuỗi trên máy chủ thay vì byte vì một số khung hoặc thư viện trên hệ thống đã chuyển đổi hoàn toàn một số byte ngẫu nhiên thành chuỗi và điều này xảy ra do mã hóa

Người dùng có thể gặp phải trường hợp máy chủ của anh ta nhận được các ký tự utf-8 nhưng khi anh ta cố truy xuất nó từ chuỗi truy vấn, anh ta nhận được mã ASCII. Vì vậy, để chuyển chuỗi thuần túy sang utf-8, chúng ta sẽ sử dụng phương thức encode() để chuyển chuỗi thành utf-8 trong python 3

Sử dụng mã hóa () để chuyển đổi Chuỗi thành UTF-8

Phương thức encode() trả về phiên bản được mã hóa của chuỗi. Trong trường hợp không thành công, có thể xảy ra ngoại lệ UnicodeDecodeError

cú pháp

string.encode(encoding = 'UTF-8', errors = 'strict')

Thông số

string1 = "apple"
string2 = "Preeti125"
string3 = "12345"
string4 = "pre@12"
4 - loại mã hóa như 'UTF-8', ASCII, v.v.

string1 = "apple"
string2 = "Preeti125"
string3 = "12345"
string4 = "pre@12"
5 - phản hồi khi mã hóa không thành công

Có sáu loại phản hồi lỗi

  • nghiêm ngặt - phản hồi mặc định làm tăng ngoại lệ UnicodeDecodeError khi thất bại
  • bỏ qua - bỏ qua Unicode không mã hóa được từ kết quả
  • thay thế - thay thế Unicode không thể mã hóa thành dấu chấm hỏi?
  • xmlcharrereplace - chèn tham chiếu ký tự XML thay vì Unicode không mã hóa được
  • backslashreplace - chèn một chuỗi thoát \uNNNN thay vì Unicode không mã hóa được
  • namereplace - chèn \N{. } chuỗi thoát thay vì Unicode không mã hóa được

Theo mặc định, phương thức encode() không nhận bất kỳ tham số nào

Ví dụ

# unicode string
string = 'pythön!'
# default encoding to utf-8
string_utf = string.encode()
print('The encoded version is:', string_utf)


Phiên bản được mã hóa là. b'pyth\xc3\xb6n. '

Phần kết luận

Trong bài viết này, chúng ta đã học cách chuyển đổi một chuỗi đơn giản sang định dạng utf-8 bằng phương thức encode(). Bạn cũng có thể thử sử dụng các định dạng mã hóa và tham số lỗi khác nhau

Cách đặt mã hóa thành UTF

Làm cách nào để chuyển đổi chuỗi thành UTF-8 trong Python? .
string1 = "apple" string2 = "Preeti125" string3 = "12345" string4 = "pre@12"
chuỗi. mã hóa (mã hóa = 'UTF-8', lỗi = 'nghiêm ngặt')
# chuỗi unicode string = 'pythön. ' # mã hóa mặc định thành utf-8 string_utf = string. encode() print('Phiên bản được mã hóa là. ', string_utf)

Mã hóa =' UTF là gì

UTF-8 là hệ thống mã hóa cho Unicode . Nó có thể dịch bất kỳ ký tự Unicode nào thành chuỗi nhị phân duy nhất phù hợp và cũng có thể dịch chuỗi nhị phân trở lại ký tự Unicode. Đây là ý nghĩa của “UTF” hoặc “Định dạng chuyển đổi Unicode. ”

Python có mặc định là UTF không

Mã hóa mặc định của tệp nguồn Python là UTF-8 . JSON, TOML, YAML sử dụng UTF-8. Hầu hết các trình soạn thảo văn bản, bao gồm Visual Studio Code và Windows Notepad đều sử dụng UTF-8 theo mặc định.

Cách kiểm tra utf

String encode() Tham số . Nó trả về một phiên bản được mã hóa utf-8 của chuỗi. Trong trường hợp không thành công, nó sẽ tạo ra một ngoại lệ UnicodeDecodeError.