Thứ Ba, 15 tháng 3, 2011

Các bộ kí tự mã hóa là gì? Chúng khác nhau như thế nào?


ASCII, UTF-8, ISO-8859... Bạn có lẽ đã nhìn thấy những kí hiệu lạ lùng này ở đâu đó, nhưng nó chính xác có nghĩa là gì? Hãy đọc để xem chúng tôi giải thích bộ mã hóa kí tự là gì và làm cách nào những từ viết tắt liên quan đến văn bản thường mà chúng ta vẫn thường thấy trên màn hình.

Xây dựng những nền móng cơ bản
Khi chúng ta nói về ngôn ngữ viết, chúng ta nói về những chữ cái trở thành từng từ, sau đó thành câu, từng đoạn... Những chữ cái là những biểu tượng đại diện cho âm thanh. Khi bạn nói về ngôn ngữ, bạn đang nói về nhóm những âm điệu mà đi cùng nhau để hình thành vài loại ý nghĩa. Mỗi hệ thống ngôn ngữ có một bộ luật lệ phức tạp và những định nghĩa mà quản lý ý nghĩa. Nếu bạn có một từ, nó trở nên vô dụng nếu bạn không biết nó thuộc về ngôn ngữ nào và không biết sử dụng nó ra sao với người mà nói ngôn ngư đó.

[caption id="" align="alignnone" width="411" caption="Comparison of Grantha, Tulu, and Malayalam scripts, Image from Wikipedia"]Comparison of Grantha, Tulu, and Malayalam scripts, Image from Wikipedia[/caption]

Theo ngôn ngữ của máy tính, chúng ta sử dụng từ "kí tự". Một kí tự là một loại khái niệm trìu tượng, được xác định bởi những thông số cụ thể, nhưng đó là đơn vị cơ bản của ngữ nghĩa. Kí tự Latin 'A' không giống kí tự Hy Lạp 'alpha' hoặc Ả rập 'alif' bởi vì chúng có những ngữ cảnh khác nhau - chúng từ những ngôn ngữ khác nhau và có phát âm hơi khác biệt - do đó chúng ta có thể nói rằng chúng là những kí tự khác nhau. Sự miêu tả trực quan của một kí tự được gọi là một 'kí tượng' và những bộ kí tượng khác nhau được gọi là những phông chữ. Nhóm những kí tự thuộc về một 'bộ' hoặc một 'kho tàng'.

Khi bạn đánh một đoạn văn và bạn thay đổi phông chữ, bạn không thay đổi giá trị ngữ âm của những chữ cái, bạn đang thay đổi việc chúng trông ra sao. Đó chỉ là vẻ ngoài (nhưng không phải không quan trọng!). Vài ngôn ngữ, như là Ai Cập cổ hay Trung Quốc, có những chữ tượng hình; chúng đại diện cho tất cả những ý tưởng thay vì âm thanh, và cách phát âm của chúng thay đổi qua thời gian và khoảng cách. Nếu bạn thay thế một kí tự cho những từ khác, bạn đang thay đổi một ý tưởng. Đó nhiều hơn là chỉ thay đổi những chữ cái, nó đang thay đổi cả một chữ tượng hình.

Bộ mã hóa kí tự

[caption id="" align="alignnone" width="367" caption="From Wikipedia"]From Wikipedia[/caption]

Khi bạn đánh cái gì đó lên bàn phím, hoặc tải một tệp tin, làm cách nào để máy tính biết để hiển thị? Đó là những gì mà bộ mã hóa kí tự làm được. Văn bản trên máy tính của bạn không thực sự là những chữ cái, nó là hàng loạt những cặp giá trị chữ số. Bộ mã hóa kí tự hoạt động như là chía khóa để những giá trị nào tương ứng với những kí tự nào, giống như làm sao để ra lệnh cho những âm thanh nào liên quan đến những chữ cái nào. Morse code là một loại kí tự mã hóa. Nó giải thích bằng cách nào để những nhóm đơn vị dài hay ngắn như là tiếng bíp đại diện cho những kí tự. Trong Morse code, những kí tự chỉ là chữ cái tiếng Anh, số, dấu nhấn, dấu chấm câu, kí hiệu quốc tế...

Trong chủ đề này, từ "bảng mã" cũng được dùng thường xuyên. Chúng là những bộ kí tự mã hóa cần thiết sử dụng bởi những công ty cụ thể, thường với đôi chút sửa đổi. Ví dụ, bảng mã Windows 1252 (chính thức được biết đến như ANSI 1252) là một dạng chỉnh sửa của ISO-8859-1. Chúng hầu như được sử dụng như một hệ thống nội bộ để tham khảo đến bộ mã hóa kí tự chuẩn và đã chỉnh sửa mà dành riêng cho những hệ thống giống nhau. Gần đây, bộ kí tự mã hóa không còn quan trọng nữa bởi máy tính không liên lạc với nhau nữa. Với mạng Internet đang trở nên ngày càng quan trọng với chúng ta, thậm chí chúng ta còn không nhận ra.

Nhiều loại hình khác nhau

(Image from sarah sosiak)

Có rất nhiều loại kí tự mã hóa, và có rất nhiều lí do cho điều đó. Bạn chọn bộ kí tự mã hóa nào để sử dụng còn phụ thuộc vào nhu cầu của bạn. Nếu bạn cần liên lạc ở Hàn Quốc, khi đó bạn sẽ muốn bộ mã mà đại diện tốt cho Hangul và Hanja. Nếu bạn là một nhà toán học, khi đó bạn muốn bộ mã mà cả biểu tượng khoa học và toán học đều được diễn tả tốt, cũng như là những kí tượng Hy Lạp và Latin. Nếu bạn là một kẻ tinh nghịch, bạn có thể sẽ hứng thú với văn bản không có trật tự. Và nếu bạn muốn tất cả các loại tài liệu có thể được xem bởi tất cả mọi người, bạn sẽ muốn một bộ mã thông dụng và dễ dàng truy cập.

[caption id="" align="alignnone" width="446" caption="ASCII table"]ASCII table[/caption]

(Excerpt of ASCII table, Image from asciitable.com)

  • ASCII - là viết tắt của The American Stadard Code for Information Interchange là một trong những bộ mã hóa kí tự lâu đời. Có nguồn gốc được nghĩ ra dựa trên mã số điện báo và được phát triển theo thời gian để bao gồm nhiều biểu tượng hơn và vài kí tự lỗi thời, không in được. Hầu như chắc chắn rằng về cơ bản bạn có thể thấy nó trong vài điều khoản của những hệ thống hiện đại, như là nó bị giới hạn đối với bảng chữ cái Latin mà kí tự không có dấu. Bộ mã 7-bit cho phép mỗi 128 kí tự, đó là lý do tại sao có vài biến thể không chính thức được sử dụng trên thế giới.

  • ISO-8859 - nhóm kí tự mã hóa The International Organization for Standardization được sử dụng rộng rãi nhất có số 8859. Mỗi bộ mã riêng được thiết kế bởi một số, thường được theo sau bởi một biểu tượng, ví dụ: ISO-8859-3 (Latin-3), ISO-8859-6 (Latin/Arabic). Nó là bộ cha của ASCII, có nghĩa là 128 giá trị đầu của bộ mã giống với ASCII. Tuy nhiên nó là 8-bit, và cho phép được 256 kí tự, do vậy nó được xây thêm từ đây và bao gồm một mảng rộng lớn những kí tự, với mỗi bộ mã riêng tập trung vào một bộ khác nhau của tiêu chuẩn. Latin-1 bao hàm một đống chữ cái có dấu và biểu tượng, nhưng sau đó đã bị thay thể bởi một bộ sửa đổi gọi là Latin-9, bao gồm những kí tượng được cập nhật như biểu tượng Euro.


[caption id="" align="alignnone" width="429" caption="Excerpt of Tibetan script"]Excerpt of Tibetan script[/caption]

(Excerpt of Tibetan script, Unicode v4, from unicode.org)

  • Unicode - Tiêu chuẩn của bộ mã này là nhằm mục đích phổ quát. Hiện tại nó bao gồm 93 kịch bản được tổ chức theo một vài khối, với nhiều hơn vào công việc. Unicode làm việc khác với những bộ kí tự khác ở chỗ thay vi trực tiếp mã hóa kí tượng, mỗi giá trị được định hướng thêm một "điểm mã". Có những giá trị thập lục phân mà liên quan đến những kí tự nhưng không phải kí tượng của chính nó mà thường được mô tả như sau: U+0040 (được dịch là '@'). Những bộ mã riêng dưới chuẩn Unicode là UTF-8 và UTF-16. UTF-8 nỗ lực để thích ứng tốt nhất với ASCII. Nó 8-bit, nhưng cho phép tất cả các kí tự qua một cơ chế thay thế và nhiều cặp giá trị mỗi kí tự. UTF-16 có thể tương thích hoàn toàn với ASCII.

  • ISO-10646 - Đây không phải là bộ mã, chỉ là một bộ các kí tự Unicode mà được chuẩn hóa bởi chuẩn ISO. Nó cũng quan trọng bởi vì nó là kho kí tự sử dụng trong HTML. Một vài chức năng chuyên sâu cung cấp bởi Unicode cho phép đối chiếu và kịch bản từ phải sang trái cùng với từ trái qua phải đã không còn. Tuy vậy, nó hoạt động rất tốt khi sử dụng trên Internet như là cho phép sử dụng một lượng lớn kịch bản và cho phép trình duyệt diễn tả những kí tượng. Điều này làm cho việc nội địa hóa phần nào dễ dàng hơn.


Bạn nên sử dụng bộ mã hóa kí tự nào?

Well, ASCII works for most English speakers, but not for much else. More often you’ll be seeing ISO-8859-1, which works for most Western European languages. The other versions of ISO-8859 work for Cyrillic, Arabic, Greek, or other specific scripts. However, if you want to display multiple scripts in the same document or on the same web page, UTF-8 allows for much better compatibility. It also works really well for people who use proper punctuation, math symbols, or off-the-cuff characters, such as squares and checkboxes.

ASCII hoạt động với hầu hết những người nói tiếng Anh, nhưng không nhiều với những người khác. Bạn sẽ thường xuyên thấy ISO-8859-1 hơn, nó hoạt động nhiều nhất với ngôn ngữ Tây Âu. Phiên bản khác của ISO-8859 hoạt động với Cyrillic, Ả rập, Hy Lạp, hoặc những kịch bản riêng khác. Tuy nhiên, nếu bạn muốn hiển thị nhiều kịch bản cùng lúc trong một tài liệu hoặc trong cùng một trang web, UTF-8 cho phép tính tương thích cao hơn.

[caption id="" align="alignnone" width="584" caption="Nhiều ngôn ngữ khác nhau ở trong cùng một trang web"]Nhiều ngôn ngữ khác nhau ở trong cùng một trang web[/caption]

(Nhiều ngôn ngữ ở trong cùng một tài liệu, ảnh chụp trang gujaratsamachar.com)

Tuy nhiên mỗi bộ mã đều có những hạn chế. ASCII bị giới hạn trong những dầu chấm. Bạn đã bao giờ thấy khi sao chép hoặc dán từ Word chỉ ra vài kí tượng kết hợp với nhau? Đó là hạn chế của ISO-8859. Hạn chế chính của UTF-8 là thiếu hỗ trợ riêng trong chỉnh sửa và xuất bản ứng dụng. Vấn đề khác là trình duyệt thường không thể thông dịch và chỉ hiển thị số thứ tự byte của một kí tự UTF-8 đã mã hóa. Kết quả là những kí tượng không mong muốn xuất hiện. Và tất nhiên, điều đó cho thấy rằng một bộ mã hóa và sử dụng những kí tự từ những bộ khác mà không khai báo hoặc tham chiếu chúng đúng cách trên một trang web làm cho trình duyệt khó có thể thông dịch chúng một cách chính xác và để cho những cố máy tìm kiếm có thể chỉ đến chúng một cách tương đối.

Để cho những tài liệu của bạn, bản thảo... bạn có thể sử dụng bất cứ cái gì bạn cần để hoàn thành công việc. Mặc dù, có vẻ như hầu hết mọi người chấp nhận sử dụng một bản UTF-8 mà không sử dụng dấu thứ tự byte, nhưng điều đó không hoàn toàn thống nhất. Như bạn có thể thấy, mỗi bộ mã có lợi ích của riêng nó, hoàn cảnh, điểm mạnh và điểm yếu. Là một người sử dụng cuối, bạn hầu như không phải đối phó với điều này, nhưng bây giờ bạn có thể đi một bước lớn phía trước nếu bạn có thể chọn.

Bản dịch của Moon Knight (theo HowToGeek)

Không có nhận xét nào:

Đăng nhận xét