cuốn sách gpt4 ai đã làm

Mã hóa chuỗi (ASCII, GBK, ANSI, Unicode ('u'), mã hóa UTF-8) (in lại)

In lại Tác giả: Sahara Thời gian cập nhật: 2024-12-31 04:38:57 56 4
mua khóa gpt4 Nike

[Tuyên bố về bản quyền] Bài viết này được in lại với sự đồng ý của blogger. Từ [hxxjxw] Liên kết gốc: https://blog.csdn.net/hxxjxw/article/details/90140663.

Mục lục
  • Sự phát triển của mã hóa chuỗi
  • mã hóa GBK
  • Mã ANSI
  • mã hóa Unicode
  • UTF-8

Sự phát triển của mã hóa chuỗi

1. Trước hết, máy tính chỉ có thể xử lý số và văn bản chỉ có thể được xử lý bằng cách chuyển đổi nó thành số. Trong máy tính, 8 bit được dùng làm một byte nên số lớn nhất có thể biểu diễn bằng một byte là 255. Vì máy tính do người Mỹ phát minh ra nên một byte có thể biểu diễn tất cả các ký tự nên bảng mã ASCII (một byte) trở thành kiểu mã của Mỹ. Mã tiêu chuẩn con người (ASCII, Mã tiêu chuẩn Mỹ về trao đổi thông tin, Mã tiêu chuẩn Mỹ về trao đổi thông tin).

2. Tuy nhiên, ASCII rõ ràng là không đủ để xử lý tiếng Trung. Nó có hơn 255 ký tự tiếng Trung, vì vậy Trung Quốc đã xây dựng bảng mã GB2312, sử dụng hai byte để thể hiện một ký tự tiếng Trung. GB2312 cũng bao gồm ASCII. Tương tự, hàng trăm quốc gia như Nhật Bản và Hàn Quốc đã phát triển một bộ mã hóa byte để giải quyết vấn đề này. Ngày càng có nhiều tiêu chuẩn hiển thị hỗn hợp nhiều ngôn ngữ, chắc chắn sẽ có các ký tự bị cắt xén. .

3. Sau đó, unicode xuất hiện, hợp nhất tất cả các ngôn ngữ thành một bộ mã hóa. Chúng ta hãy xem bảng mã ASCII và unicode: 1) Chữ A được mã hóa dưới dạng thập phân bởi ASCI là 65, nhị phân 01000001 2) Ký tự tiếng Trung “中” gần như đã vượt quá phạm vi mã hóa ASCII, mã hóa unicode là 20013 và mã nhị phân là 0100111000101101. 3) A sử dụng mã hóa unicode và chỉ cần thêm 0 vào phía trước. Mã nhị phân là 0000000001000001.

hình ảnh

Trích đoạn.

4. Vấn đề về mã bị cắt xén đã được giải quyết, nhưng nếu nội dung hoàn toàn bằng tiếng Anh, thì bảng mã Unicode yêu cầu dung lượng lưu trữ gấp đôi so với ASCII, đồng thời, việc truyền tải yêu cầu dung lượng truyền tải gấp đôi. Khi có nhiều tệp, không gian kép này thực sự rất lớn (hãy nghĩ về 1 T và chữ T rất phổ biến ở các công ty lớn).

5. Do đó, mã hóa có độ dài thay đổi "utf-8" đã xuất hiện, làm cho tiếng Anh dài hơn một byte và ký tự tiếng Trung dài hơn 3 byte. Loại đặc biệt không phổ biến là 4-6 byte. Nếu một lượng lớn tiếng Anh được truyền đi, tác dụng của utf8 là rõ ràng.

Tất nhiên, không có sự giảm dung lượng đối với tiếng Trung. Ưu điểm của mã hóa utf8 là đặc biệt lớn khi lưu trữ tệp hoặc truyền qua mạng. Tuy nhiên, nếu các chuỗi thực sự nằm trong bộ nhớ, một số chiếm 1 byte và một số chiếm 2 byte. rất khó nắm bắt nên unicode Mặc dù việc mã hóa chiếm nhiều không gian nhưng khi lập trình, xử lý trong bộ nhớ lại đơn giản hơn utf8 vì chúng có cùng độ dài.

Do đó, thông thường khi lưu tệp hoặc truyền qua mạng, mã hóa unicode được chuyển đổi thành mã hóa utf8.

Khi đọc dữ liệu từ file, hãy chuyển đổi bảng mã UTF8 sang bảng mã Unicode để xử lý.

Tất cả các chuỗi Python3 đều được mã hóa nội bộ bằng Unicode.

mã hóa GBK

Mã hóa GBK được sử dụng đặc biệt để giải quyết mã hóa tiếng Trung và là byte kép. Cả tiếng Trung và tiếng Anh đều là byte kép.

Do bảng mã ASCII không hỗ trợ tiếng Trung nên khi người Trung Quốc sử dụng máy tính cần tìm phương pháp mã hóa để hỗ trợ tiếng Trung. Vì vậy, người Trung Quốc đã xác định một bộ quy tắc mã hóa: khi một ký tự nhỏ hơn 127 bit thì giống với ký tự ASCII, nhưng khi hai ký tự lớn hơn 127 được kết nối với nhau thì nó đại diện cho một ký tự Trung Quốc và byte đầu tiên. được gọi là byte cao (từ 0xA1-0xF7), byte thứ hai là byte thấp (từ 0xA1-0xFE), do đó có thể kết hợp khoảng 7000 ký tự tiếng Trung giản thể. Quy tắc này được gọi là GB2312.

Tuy nhiên, vì có nhiều ký tự tiếng Trung ở Trung Quốc nên một số ký tự không thể được biểu diễn nên các quy tắc đã được xác định lại: không còn yêu cầu byte thấp phải là mã sau 127. Miễn là byte đầu tiên lớn hơn 127, Đã sửa lỗi đây là phần đầu của ký tự tiếng Trung, bất kể Nội dung tiếp theo trong bộ ký tự mở rộng là gì. Sơ đồ mã hóa mở rộng này được gọi là tiêu chuẩn GBK, bao gồm tất cả nội dung của GB2312 và bổ sung gần 20.000 ký tự tiếng Trung mới (bao gồm cả các ký tự tiếng Trung phồn thể) và ký hiệu.

Tuy nhiên, ở Trung Quốc có 56 dân tộc nên chúng tôi lại mở rộng quy tắc mã hóa và thêm gần hàng nghìn ký tự của các dân tộc thiểu số nên mã hóa mở rộng được gọi là GB18030. Các lập trình viên Trung Quốc cảm thấy loạt tiêu chuẩn mã hóa này rất tốt nên họ gọi chung là "DBCS" (Double Byte Charecter Set).

Mã ANSI

Mã hóa ANSI là phần mở rộng của mã ASCII: Mã hóa ANSI sử dụng 1 byte trong phạm vi 0x00 ~ 0x7f (tức là 0 đến 127 ở dạng thập phân tích) để biểu thị một ký tự tiếng Anh ngoại tuyến và phạm vi 0x80~0xFFFF trong một byte. giống với mã ASCII ở 128 đầu tiên (0-127) và các ký tự tiếp theo đều là ký tự của một ngôn ngữ quốc gia lớn nhất định nghĩa. 65536 ký tự, chắc chắn là đủ cho các ký tự của một ngôn ngữ. xây dựng GB2312 mã hóa, dùng để mã hóa tiếng Trung. Euc-kr. Mỗi quốc gia đều cotiêu chuẩn riêng. đổi sang nhau, điều này sẽ dẫn đến các đoạn mã được cắt xén trong các bản văn đa ngôn ngữ logic.

mã hóa Unicode

Mọi thứ bắt đầu bằng \u đều là unicode mã hóa.

Bởi vì có nhiều quốc gia trên thế giới, mỗi quốc gia tự xác định tiêu chuẩn hóa hóa của riêng mình Kết quả là không. ai hiểu được mã hóa của nhau và không thể truyền đạt tốt. tế) đã xuất hiện. các vấn đề về mã hóa của tất cả các quốc gia. Nó là một tập hợp các ký tự (gán một ID duy nhất cho mỗi "ký tự" (tên khoa học: điểm mã/điểm/mã hóa điểm) )), Unicode có thể được hiểu là thế giới bảng điển điển.

Mã hóa Unicode tương thích với mã hóa ASCII.

UTF-8

UTF-8 được phát triển dưới dạng Unicode UTF-16 (ký tự được biểu thị bằng hai byte hoặc bốn byte) và UTF-32 (ký tự được biểu thị bằng byte bốn), nhưng về cơ bản chúng không được sử dụng trên Internet một lần nữa, mối mọt. liên hệ ở đây là UTF-8 là một khai báo của Unicode.

Một trong những tính năng lớn nhất của UTF-8 là mã hóa phương pháp có độ dài thay đổi. Nó có thể sử dụng 1 ~ 4 byte để biểu tượng một ký hiệu và byte dài thay đổi tùy chọn theo các ký hiệu khác nhau.

(ASCII, GBK, ANSI, Unicode ('u'), mã hóa UTF-8) (được in lại) end at here ('u'), mã hóa. UTF-8) (tái bản), vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan Tôi hy vọng bạn sẽ ủng hộ blog. của tôi trong tương lai .

56 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress