Hướng dẫn convert special characters to utf-8 python - chuyển đổi các ký tự đặc biệt thành utf-8 python

231

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một trình duyệt gửi các ký tự UTF-8 đến máy chủ Python của tôi, nhưng khi tôi lấy nó từ chuỗi truy vấn, mã hóa mà Python trả về là ASCII. Làm cách nào để chuyển đổi chuỗi đơn giản thành UTF-8?

Lưu ý: Chuỗi được truyền từ web đã được mã hóa UTF-8, tôi chỉ muốn tạo Python để coi nó là UTF-8 không ASCII.

Hướng dẫn convert special characters to utf-8 python - chuyển đổi các ký tự đặc biệt thành utf-8 python

Người dơi

8.3277 Huy hiệu vàng39 Huy hiệu bạc76 Huy hiệu đồng7 gold badges39 silver badges76 bronze badges

Đã hỏi ngày 15 tháng 11 năm 2010 lúc 8:26Nov 15, 2010 at 8:26

3

Trong Python 2

>>> plain_string = "Hi!"
>>> unicode_string = u"Hi!"
>>> type(plain_string), type(unicode_string)
(<type 'str'>, <type 'unicode'>)

^ Đây là sự khác biệt giữa chuỗi byte (Plain_String) và chuỗi Unicode.

>>> s = "Hello!"
>>> u = unicode(s, "utf-8")

^ Chuyển đổi sang Unicode và chỉ định mã hóa.

Trong Python 3

Tất cả các chuỗi là unicode. Hàm

>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
4 không còn tồn tại nữa. Xem câu trả lời từ @noumenon

Hướng dẫn convert special characters to utf-8 python - chuyển đổi các ký tự đặc biệt thành utf-8 python

Maxime

282 huy hiệu bạc5 huy hiệu đồng2 silver badges5 bronze badges

Đã trả lời ngày 15 tháng 11 năm 2010 lúc 8:31Nov 15, 2010 at 8:31

user225312user225312user225312

121K66 Huy hiệu vàng167 Huy hiệu bạc181 Huy hiệu Đồng66 gold badges167 silver badges181 bronze badges

7

Nếu các phương thức trên không hoạt động, bạn cũng có thể nói với Python bỏ qua các phần của chuỗi mà nó không thể chuyển đổi thành UTF-8:

stringnamehere.decode('utf-8', 'ignore')

Đã trả lời ngày 7 tháng 10 năm 2013 lúc 17:00Oct 7, 2013 at 17:00

Hướng dẫn convert special characters to utf-8 python - chuyển đổi các ký tự đặc biệt thành utf-8 python

Duhaimeduhaimeduhaime

24K14 Huy hiệu vàng156 Huy hiệu bạc200 Huy hiệu đồng14 gold badges156 silver badges200 bronze badges

3

Có thể hơi quá mức, nhưng khi tôi làm việc với ASCII và Unicode trong cùng một tệp, việc lặp lại giải mã có thể là một nỗi đau, đây là những gì tôi sử dụng:

def make_unicode(inp):
    if type(inp) != unicode:
        inp =  inp.decode('utf-8')
    return inp

Hướng dẫn convert special characters to utf-8 python - chuyển đổi các ký tự đặc biệt thành utf-8 python

Đã trả lời ngày 29 tháng 11 năm 2014 lúc 19:13Nov 29, 2014 at 19:13

1

Thêm dòng sau vào đầu tệp .py của bạn:

# -*- coding: utf-8 -*-

Cho phép bạn mã hóa các chuỗi trực tiếp trong tập lệnh của mình, như thế này:

utfstr = "ボールト"

Hướng dẫn convert special characters to utf-8 python - chuyển đổi các ký tự đặc biệt thành utf-8 python

Nổi tiếng

13.3k5 Huy hiệu vàng56 Huy hiệu bạc74 Huy hiệu đồng5 gold badges56 silver badges74 bronze badges

Đã trả lời ngày 22 tháng 5 năm 2014 lúc 15:15May 22, 2014 at 15:15

KenkenKen

3693 Huy hiệu bạc14 Huy hiệu Đồng3 silver badges14 bronze badges

3

Nếu tôi hiểu bạn một cách chính xác, bạn có một chuỗi byte được mã hóa UTF-8 trong mã của bạn.

Chuyển đổi chuỗi byte thành chuỗi unicode được gọi là giải mã (unicode-> chuỗi byte là mã hóa).

Bạn làm điều đó bằng cách sử dụng hàm Unicode hoặc phương thức giải mã. Một trong hai:

unicodestr = unicode(bytestr, encoding)
unicodestr = unicode(bytestr, "utf-8")

Or:

unicodestr = bytestr.decode(encoding)
unicodestr = bytestr.decode("utf-8")

Đã trả lời ngày 15 tháng 11 năm 2010 lúc 8:55Nov 15, 2010 at 8:55

codeapecodeapecodeape

95,4K24 Huy hiệu vàng151 Huy hiệu bạc180 Huy hiệu đồng24 gold badges151 silver badges180 bronze badges

city = 'Ribeir\xc3\xa3o Preto'
print city.decode('cp1252').encode('utf-8')

Đã trả lời ngày 26 tháng 7 năm 2017 lúc 20:31Jul 26, 2017 at 20:31

WillemwillemWillem

1.2941 Huy hiệu vàng8 Huy hiệu bạc7 Huy hiệu đồng1 gold badge8 silver badges7 bronze badges

0

Trong Python 3.6, họ không có phương thức unicode () tích hợp. Chuỗi đã được lưu trữ dưới dạng Unicode theo mặc định và không cần chuyển đổi. Thí dụ:

my_str = "\u221a25"
print(my_str)
>>> √25

Đã trả lời ngày 20 tháng 4 năm 2017 lúc 15:53Apr 20, 2017 at 15:53

Hướng dẫn convert special characters to utf-8 python - chuyển đổi các ký tự đặc biệt thành utf-8 python

Dịch với ord () và unichar (). Mỗi char unicode đều có một số được liên kết, một cái gì đó giống như một chỉ mục. Vì vậy, Python có một vài phương pháp để dịch giữa một char và số của anh ta. Nhược điểm là một ví dụ. Hy vọng nó có thể giúp đỡ.

>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
0

Đã trả lời ngày 9 tháng 11 năm 2017 lúc 17:24Nov 9, 2017 at 17:24

Joe9008Joe9008Joe9008

6257 Huy hiệu bạc12 Huy hiệu Đồng7 silver badges12 bronze badges

  • Đầu tiên,
    >>> s = "Hello!"
    >>> u = unicode(s, "utf-8")
    
    5 trong Python được thể hiện trong
    >>> s = "Hello!"
    >>> u = unicode(s, "utf-8")
    
    6.
  • Thứ hai,
    >>> s = "Hello!"
    >>> u = unicode(s, "utf-8")
    
    7 là một tiêu chuẩn mã hóa để mã hóa chuỗi
    >>> s = "Hello!"
    >>> u = unicode(s, "utf-8")
    
    6 thành
    >>> s = "Hello!"
    >>> u = unicode(s, "utf-8")
    
    9. Có nhiều tiêu chuẩn mã hóa ngoài kia (ví dụ:
    stringnamehere.decode('utf-8', 'ignore')
    
    0,
    stringnamehere.decode('utf-8', 'ignore')
    
    1,
    stringnamehere.decode('utf-8', 'ignore')
    
    2, v.v.).

Khi khách hàng gửi dữ liệu đến máy chủ của bạn và họ đang sử dụng

>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
7, họ đang gửi một loạt
>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
9 chứ không phải
>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
5.

Bạn đã nhận được một

>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
5 vì "thư viện" hoặc "khung" mà bạn đang sử dụng, đã ngầm chuyển đổi một số
>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
9 ngẫu nhiên thành
>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
5.

Dưới mui xe, chỉ có một loạt

>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
9. Bạn chỉ cần yêu cầu "thư viện" cung cấp cho bạn nội dung yêu cầu trong
>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
9 và bạn sẽ tự xử lý việc giải mã (nếu thư viện không thể cung cấp cho bạn thì nó đang cố gắng thực hiện ma thuật đen thì bạn không nên sử dụng nó).

  • Giải mã
    >>> s = "Hello!"
    >>> u = unicode(s, "utf-8")
    
    7 được mã hóa
    >>> s = "Hello!"
    >>> u = unicode(s, "utf-8")
    
    9 thành
    >>> s = "Hello!"
    >>> u = unicode(s, "utf-8")
    
    5:
    def make_unicode(inp):
        if type(inp) != unicode:
            inp =  inp.decode('utf-8')
        return inp
    
    4
  • Mã hóa
    >>> s = "Hello!"
    >>> u = unicode(s, "utf-8")
    
    5 đến
    >>> s = "Hello!"
    >>> u = unicode(s, "utf-8")
    
    7
    >>> s = "Hello!"
    >>> u = unicode(s, "utf-8")
    
    9:
    def make_unicode(inp):
        if type(inp) != unicode:
            inp =  inp.decode('utf-8')
        return inp
    
    8

Đã trả lời ngày 7 tháng 8 năm 2020 lúc 0:11Aug 7, 2020 at 0:11

Hướng dẫn convert special characters to utf-8 python - chuyển đổi các ký tự đặc biệt thành utf-8 python

Shiokoshiokoshioko

3053 Huy hiệu bạc11 Huy hiệu đồng3 silver badges11 bronze badges

Bạn cũng có thể làm điều này:

>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
1

Đã trả lời ngày 19 tháng 7 năm 2021 lúc 16:25Jul 19, 2021 at 16:25

Hướng dẫn convert special characters to utf-8 python - chuyển đổi các ký tự đặc biệt thành utf-8 python

KevinkevinKevin

16 huy hiệu đồng6 bronze badges

1

Bạn có thể sử dụng mô -đun thư viện tiêu chuẩn của Python.

>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
2

Đã trả lời ngày 20 tháng 9 năm 2021 lúc 22:26Sep 20, 2021 at 22:26

Hướng dẫn convert special characters to utf-8 python - chuyển đổi các ký tự đặc biệt thành utf-8 python

HCckshacckhaccks

102K24 Huy hiệu vàng168 Huy hiệu bạc257 Huy hiệu đồng24 gold badges168 silver badges257 bronze badges

URL được dịch sang ASCII và máy chủ Python, đây chỉ là một chuỗi Unicode, ví dụ: "T%C3%A9ST%C3%A3O"

Python hiểu "é" và "Ã" là thực tế %C3 %A9 và %C3 %A3.

Bạn có thể mã hóa một URL như thế này:

>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
3

Xem https://www.adamsmith.haus/python/answers/how-to-decode-a-utf-8-url-in-python để biết chi tiết.

Đã trả lời ngày 1 tháng 9 lúc 10:20Sep 1 at 10:20

Hướng dẫn convert special characters to utf-8 python - chuyển đổi các ký tự đặc biệt thành utf-8 python

Làm thế nào để bạn chuyển đổi các ký tự đặc biệt trong Python?

Điều này có thể đạt được với sự trợ giúp của phương thức html.escape () (đối với Python 3.4+), chúng ta có thể chuyển đổi chuỗi ASCII thành tập lệnh HTML bằng cách thay thế các ký tự ASCII bằng các ký tự đặc biệt bằng cách sử dụng HTML.Phương thức thoát ().html. escape() method(for Python 3.4+), we can convert the ASCII string into HTML script by replacing ASCII characters with special characters by using html. escape() method.

Làm cách nào để chuyển đổi sang UTF

Mã hóa tệp chuyển đổi sang câu trả lời mã của UTF-8 Python..
với Open (ff_name, 'rb') là nguồn_file:.
với mở (target_file_name, 'w+b') là Dest_file:.
Nội dung = Source_File.đọc().
DEST_FILE.Viết (Nội dung. Giải mã ('UTF-16'). Mã hóa ('UTF-8')).

Làm cách nào để thay đổi Unicode trong Python?

Phương thức số 2: Sử dụng Định dạng nối () + định dạng () + ord () Trong đó, nhiệm vụ thay thế trong chuỗi được định dạng unicode được thực hiện bằng định dạng () và ord () được sử dụng để chuyển đổi.Using join() + format() + ord() In this, task of substitution in unicode formatted string is done using format() and ord() is used for conversion.

Python có phải là UTF không

Theo mặc định, Python sử dụng mã hóa UTF-8..