Máy tínhLập trình

UTF-8 - mã hóa ký tự

Unicode hỗ trợ hầu như tất cả các bộ ký tự hiện có. Các hình thức tốt nhất của mã hóa Unicode bộ ký tự là mã UTF-8. Nó hỗ trợ khả năng tương thích với ASCII, khả năng chống biến dạng của dữ liệu, hiệu quả và dễ chế biến. Nhưng điều đầu tiên đầu tiên.

hình thức mã hóa

Máy tính hoạt động không chỉ như số đối tượng trừu tượng toán học, cũng như sự kết hợp của các đơn vị lưu trữ và xử lý dữ liệu kích thước cố định - byte và từ 32-bit. tiêu chuẩn mã hóa phải thực hiện việc này vào tài khoản khi xác định làm thế nào để trình bày số lượng ký tự.

Trong các hệ thống máy tính, các số nguyên được lưu trữ trong các tế bào bộ nhớ 8 bit (1 byte), 16 hoặc 32 bit. Mỗi hình thức định nghĩa một bảng mã Unicode, mà chuỗi các tế bào bộ nhớ là một số nguyên tương ứng với một biểu tượng đặc biệt. Trong tiêu chuẩn này có ba hình thức khác nhau của mã hóa các ký tự Unicode 8, 16 và 32-bit khối. Theo đó, họ được gọi là UTF-8, UTF-16 và UTF-32. Tên UTF là viết tắt của Unicode Format Transformation. Mỗi phòng trong số ba hình thức của phương tiện mã hóa bằng ký tự Unicode đại diện có lợi thế trong các ứng dụng khác nhau.

Mã hóa dữ liệu có thể được sử dụng để đại diện cho tất cả các nhân vật trong các tiêu chuẩn Unicode. Do đó, họ hoàn toàn tương thích với các giải pháp cho một loạt các lý do này, sử dụng các hình thức khác nhau của mã hóa. Mỗi mã hóa một cách rõ ràng có thể được chuyển đổi thành bất kỳ của hai người kia mà không mất dữ liệu.

nguyên tắc nenalozheniya

Mỗi phòng trong số mã hóa các hình thức Unicode phát triển trong quan điểm về sự chồng chéo không một phần. Ví dụ, Windows-932 tạo nên những nhân vật của một hoặc hai byte mã. Chiều dài chuỗi phụ thuộc vào byte đầu tiên, vì vậy các giá trị byte hàng đầu trong loạt hai-byte và tách rời byte duy nhất. Tuy nhiên, giá trị của một byte đơn và dấu chuỗi byte có thể trùng. Điều này có nghĩa ví dụ rằng việc tìm kiếm nhân vật D (mã 44) có thể tìm thấy nó nhầm lẫn bước vào phần thứ hai của chuỗi của hai byte nhân vật "D" (mã 84 44). Để tìm ra chuỗi là đúng, chương trình nên đưa vào tài khoản các byte trước.

Tình hình phức tạp, nếu trận đấu byte ở đầu và đuôi. Điều này có nghĩa rằng để loại bỏ sự mơ hồ sẽ là một tra cứu ngược lại trước khi đến đầu văn bản hoặc các chuỗi mã độc đáo. Điều này không chỉ không hiệu quả, nhưng không được bảo vệ khỏi các lỗi có thể, vì chỉ có một byte sai lầm khi toàn văn đã trở thành không thể đọc được.

Chuyển đổi định dạng Unicode tránh vấn đề này bởi vì giá trị của lãnh đạo, dấu, và một đơn vị duy nhất của lưu trữ không phải là những thông tin tương tự. Điều này đảm bảo rằng tất cả Unicode để tìm kiếm và so sánh, không bao giờ đưa ra kết quả sai lầm do sự trùng hợp ngẫu nhiên của các bộ phận khác nhau của mã nhân vật. Thực tế là những hình thức mã hóa tuân thủ các nguyên tắc nenalozheniya, phân biệt chúng với Đông Á mã hóa đa byte khác.

Một khía cạnh khác nonintersection bảng mã Unicode là mỗi nhân vật có một biên giới xác định rõ ràng. Điều này loại bỏ sự cần thiết phải quét một số lượng không xác định các biểu tượng trước đây. Tính năng này đôi khi được gọi mã hóa tự clocking. Bóp méo của các đơn vị mã sẽ giới thiệu một biến dạng chỉ có một nhân vật, và các nhân vật xung quanh vẫn còn nguyên vẹn. Trong việc chuyển đổi định dạng 8-bit, nếu các điểm con trỏ đến byte, bắt đầu với 10xxxxxx (trong mã nhị phân) để tìm sự bắt đầu của biểu tượng là cần thiết cho một đến ba chuyển ngược lại.

nhất quán

Unicode Consortium hỗ trợ đầy đủ tất cả 3 hình thức mã hóa. Điều quan trọng không phải là để phản đối việc UTF-8 và Unicode, như tất cả các định dạng chuyển đổi - bình đẳng hình thức hợp lệ hiện thân của chuẩn mã hóa ký tự Unicode.

Byte-định hướng

Đại diện cho UTF-32 ký tự sẽ cần một đơn vị mã 32-bit, mà trùng với mã Unicode. UTF-16 - 01:59 đơn vị 16-bit. Một UTF-8 sử dụng lên đến 4 byte.

mã hóa UTF-8 được thiết kế để tương thích với các hệ thống cơ sở ASCII byte theo định hướng. Hầu hết các phần mềm hiện có và thực hành công nghệ thông tin trong một thời gian dài dựa vào các đại diện của các nhân vật trong một chuỗi các byte. Nhiều giao thức phụ thuộc vào sự bất biến của mã hóa ASCII và sử dụng một trong hai tránh được các nhân vật kiểm soát đặc biệt. Một cách đơn giản để thích ứng với tình huống Unicode có thể, sử dụng 8-bit mã hóa cho đại diện các ký tự Unicode, bất kỳ ký tự ASCII tương đương hoặc một nhân vật tầm kiểm soát. Để kết thúc này, và nó là mã UTF-8.

chiều dài thay đổi

UTF-8 - mã hóa có độ dài thay đổi, bao gồm các đơn vị lưu trữ 8-bit, các bit trên mà chỉ mà một phần của chuỗi các byte mỗi cá nhân thuộc. Một loạt các giá trị được phân bổ cho phần tử đầu tiên của chuỗi mã, khác - cho tới. Điều này cung cấp mã hóa disjointness.

ASCII

mã ASCII mã hóa UTF-8 được hỗ trợ đầy đủ (0x00-0x7F). Điều này có nghĩa rằng các ký tự Unicode U + 0000-U + 007F được chuyển đổi thành đơn byte 0x00-0x7F UTF-8 và do đó trở thành không thể phân biệt từ ASCII. Hơn nữa, để tránh sự mơ hồ, giá trị 0x00-0x7F không được sử dụng nữa trong một đại diện duy nhất của byte ký tự Unicode. Để mã hóa ký tự neideograficheskih khác hơn là ASCII, sử dụng một chuỗi của hai byte. Biểu tượng dao động U + 0800-U + FFFF được đại diện bởi ba byte, và mã bổ sung với hơn U + FFFF yêu cầu bốn byte.

phạm vi ứng dụng

mã hóa UTF-8 thường được ưu tiên trong giao thức HTML, và những thứ tương tự.

XML đã trở thành tiêu chuẩn đầu tiên với sự hỗ trợ đầy đủ cho mã UTF-8. tổ chức tiêu chuẩn cũng khuyên bạn nên nó. Hỗ trợ vấn đề trong địa chỉ URL đó là khác biệt so với ASCII-nhân vật, đã được giải quyết khi W3C tập đoàn và nhóm kỹ thuật IETF đến một thỏa thuận về việc mã hóa của tất cả các địa chỉ URL độc quyền trong UTF-8.

Khả năng tương thích với ASCII điều kiện cho việc chuyển đổi sang phần mềm mới. Với UTF-8 làm việc soạn thảo văn bản, bao gồm JEdit, Emacs, BBEdit, Eclipse, và "Notepad" hệ điều hành Windows. Không một sự mã hóa Unicode không thể tự hào về một sự hỗ trợ như vậy của công cụ.

mã hóa Ưu điểm là nó bao gồm một chuỗi các byte. Với UTF-8 chuỗi rất dễ dàng để làm việc trong C và các ngôn ngữ lập trình khác. Đây là hình thức duy nhất của mã hóa, trật tự không đòi hỏi nhãn byte BOM hoặc khai báo mã hóa trong XML.

tự đồng bộ

Trong một môi trường có sử dụng những biểu tượng 8-bit của quá trình xử lý so với các bộ ký tự đa byte khác, UTF-8 có những ưu điểm sau:

  • Các chuỗi mã byte đầu tiên chứa thông tin về chiều dài của nó. Điều này làm tăng hiệu quả của việc tìm kiếm trực tiếp.
  • Đơn giản hóa việc tìm kiếm sự khởi đầu của biểu tượng như các byte bắt đầu được giới hạn trong một phạm vi nhất định các giá trị.
  • Không giao byte giá trị.

So sánh lợi ích

mã hóa UTF-8 là nhỏ gọn. Nhưng khi được sử dụng để mã hóa ký tự Đông Á (Trung Quốc, Nhật Bản, Hàn Quốc, Trung Quốc viết bằng ký hiệu) được sử dụng chuỗi 3-byte. Ngoài ra mã UTF-8 là kém hơn so với các hình thức khác của mã hóa tốc độ xử lý. Một dây chuyền phân loại nhị phân tạo ra kết quả tương tự như nhị phân sắp xếp Unicode.

Đề án mã hóa ký tự

Đề án mã hóa ký tự bao gồm ký tự mã hóa hình thức và phương pháp cho các đơn vị vị trí mã đơn byte. Để xác định các chương trình mã hóa tiêu chuẩn Unicode xuất việc sử dụng một dấu thứ tự byte đầu tiên (BOM, Byte Order Mark).

Khi BOM trong UTF-8 tính năng thẻ được giới hạn bởi tham chiếu đến việc sử dụng các hình thức mã hóa. Vấn đề trong việc xác định UTF-8 endian có, như kích thước đơn vị mã hóa của nó là một byte. Sử dụng BOM cho hình thức mã hóa không phải là cần thiết và cũng không khuyến khích. BOM có thể xảy ra trong văn bản được chuyển đổi từ mã khác khác sử dụng nhãn hiệu thứ tự byte hoặc chữ ký cho mã UTF-8. Là một chuỗi các byte 3 EF BB 16 16 BF 16.

Làm thế nào để thiết lập mã hóa UTF-8

Các HTML mã hóa UTF-8 được cài đặt với đoạn mã sau:

đầu

Meta http-equiv = "Content-Type" content = "text / html; charset = utf-8" ˃

Trong PHP mã UTF-8 được thiết lập bằng cách sử dụng chức năng header () vào đầu của tập tin sau khi cài đặt lỗi giá trị mức sản lượng:

˂? Php

error_reporting (-1);

header ( "Content-Type: text / html; charset = utf-8 ');

Để kết nối với một cơ sở dữ liệu MySQL mã UTF-8 được thiết lập:

˂? Php

mysql_set_charset ( 'utf8');

Mã hóa CSS-file là UTF-8 ký tự được quy định như sau:

@charset "utf-8";

Khi bạn lưu các tập tin của tất cả các loại chọn UTF-8 mã hóa mà không cần BOM, nếu trang web sẽ không hoạt động. Để làm điều này trong DreamWeave cần phải chọn mục trình đơn "Sửa đổi - Page Properties - Tiêu đề / Encoding" để thay đổi bảng mã UTF-8. Tiếp theo là tải lại trang, loại bỏ các dấu kiểm từ "chữ ký Connect Unicode (BOM)» và áp dụng các thay đổi. Nếu bất kỳ văn bản trên một trang hoặc trong một cơ sở dữ liệu đã được giới thiệu một hình thức mã hóa, nó là cần thiết để tái nhập hoặc tái mã hóa. Khi bạn làm việc với biểu thức thông thường, hãy chắc chắn để sử dụng modifier u.

Bạn cũng có thể lưu các tập tin trong bảng mã UTF-8 trong "Notepad" của Windows. Sau khi chọn mục trình đơn "File - Save As ..." để cài đặt các hình thức cần thiết của mã hóa và lưu các tập tin trong UTF-8.

Trong một soạn thảo văn bản Notepad ++, nếu thiết lập khác hơn là UTF-8, thông qua các mục menu "Chuyển đổi sang UTF-8 mà không BOM» thay đổi nhân vật và lưu dưới dạng UTF-8.

không có thay thế

Trong bối cảnh toàn cầu hóa, nơi ranh giới chính trị và ngôn ngữ được xoá hoàn toàn, các bộ ký tự có đặc điểm địa phương, là ít được sử dụng. Unicode là một bộ ký tự duy nhất hỗ trợ tất cả tin cục bộ. Một UTF-8 - một ví dụ về việc thực hiện đúng Unicode, đó là:

  • Nó hỗ trợ một loạt các công cụ, bao gồm khả năng tương thích với mã hóa ASCII;
  • Đó là đề kháng với dữ liệu biến dạng;
  • đơn giản và hiệu quả trong việc điều trị;
  • là nền tảng độc lập.

Với sự ra đời của các cuộc tranh luận UTF-8 về những gì hình thức mã hóa hoặc bộ ký tự là tốt hơn, nó trở nên vô nghĩa.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 vi.birmiss.com. Theme powered by WordPress.