Dùng UTF-8 với Gentoo Thomas Martin Alexander Simonov Shyam Mani Nguyễn Thái Ngọc Duy Tài liệu này chỉ cách thiết lập và dùng bảng mã Unicode UTF-8 với hệ thống Gentoo Linux của bạn, sau khi giải thích các ích lợi của Unicode và đặt biệt là UTF-8. 2.17 2006-02-15 Bảng mã
Bảng mã là gì?

Máy tính tự nó không hiểu văn bản. Thay vào đó, mỗi ký tự được đại diện bằng một con số. Theo truyền thống, một tập số dùng để đại diện cho bảng chữ cái và các ký tự khác (gọi là hệ thống bảng mã - coding system, encoding hoặc character set) có kích thước giới hạn do những giới hạn về phần cứng của máy tính.

Lịch sử bảng mã

Phần chung nhất của bảng mã (hoặc ít ra được chấp nhận rộng rãi nhất) là ASCII (American Standard Code for Information Interchange). Có thể coi nó là chuẩn phần mềm thành công nhất từ trước đến nay. ASCII hiện đại được chuẩn hoá năm 1986 (ANSI X3.4, RFC 20, ISO/IEC 646:1991, ECMA-6) bởi American National Standards Institute (ANSI).

ASCII chỉ dùng 7 bit, nghĩa là nó chỉ dùng những số được đại diện bởi 7 chữ số nhị phân, có giá trị từ 0 đến 127 tính theo thập phân. Nó bao gồm 32 ký tự không hiển thị, dùng làm ký tự điều khiển, hầu hết nằm trong 0 đến 31, cùng với ký tự điều khiển cuối cùng, DEL hay delete, có giá trị 127. Các ký tự từ 32 đến 126 là ký tự có thể thấy: khoảng trắng, dấu chấm câu, các chữ cái Latin và các con số.

Bit thứ 8 trong ASCII ban đầu dùng làm bit kiểm tra (parity bit). Nếu không dùng, nó là 0. Nghĩa là, với ASCII, mỗi ký tự nằm trong một byte đơn.

Mặc dùng ASCII đủ để liên lạc bằng tiếng Anh hiện đại, những ngôn ngữ châu Âu khác có thêm các ký tự có dấu, mọi việc trở nên không dễ dàng. Chuẩn ISO 8859 ra đời để đáp ứng nhu cầu này. Chúng tương thích ngược với ASCII, nhưng thay vì để bit 8 là 0, bit này được dùng để thêm 127 ký tự khác vào bảng mã. Những giới hạn của ISO 8859 dần dần lộ ra, và hiện có 15 biến thể khác nhau của ISO 8859 (từ 8859-1 đến 8859-15). Những byte bên ngoài phạm vi tương thích ASCII của những bảng mã này thường có xung đột giữa ký tự đại diện cho mỗi byte. Vấn đề tương tác giữa các bảng mã còn phức tạp hơn khi Windows-1252 được dùng trong vài phiên bản của Microsoft Windows cho các ngôn ngữ châu Âu. Nó kế thừa từ ISO 8859-1 nhưng lại có nhiều khác biệt. Tuy nhiên những bảng mã này vẫn tương thích với ASCII.

Sự phát triển các bảng mã một-byte hoàn toàn khác cho các bảng chữ cái phi Latin, như EUC (Extended Unix Coding) được dùng cho tiếng Nhật và tiếng Hàn Quốc (và một phần nhỏ tiếng Trung Hoa) tạo ra thêm nhiều rắc rối, trong khi những hệ điều hành khác vẫn dùng những bảng mã khác nhau cho cùng ngôn ngữ, ví dụ, Shift-JIS và ISO-2022-JP. Người dùng muốn xem các ký tự cyrillic phải chọn giữa KOI8-R cho Nga và Bungari hoặc KOI8-U cho Ukraina, cũng như các bảng mã cyrillic khác như ISO 8859-5 và bộ Windows-1251. Các bảng mã này không giữ tính tương thích với ASCII (mặc dù KOI8 đặt các ký tự cyrillic theo đúng thứ tự Latin nên trong trường hợp bit 8 bị lượt bỏ, văn bản vẫn có thể đọc trên terminal ASCII thông qua chuyển ngữ giữ nguyên hoa thường).

Điều này dẫn đến nhiều mâu thuẫn, và còn dẫn đến không thể trao đổi đa ngôn ngữ, đặc biệt giữa các bảng mã khác nhau. Unicode vào cuộc.

Unicode là gì?

Unicode loại bỏ giới hạn một byte của các bảng mã truyền thống. Nó dùng 17 "plane" 65,536 code point để mô tả 1,114,112 ký tự. Do plane đầu tiên, được biết dưới tên "Basic Multilingual Plane" hoặc BMP, chứa hầu hết những thứ cần dùng, nhiều người nhầm tưởng Unicode là bảng mã 16 bit.

Unicode được ánh xạ theo nhiều cách khác nhau, nhưng hai cách thông dụng là UTF (Unicode Transformation Format) và UCS (Universal Character Set). Con số phía sau UTF cho biết số bit được dùng cho một đơn vị, trong khi con số sau UCS cho biết số byte. Việc UTF-8 trở nên phổ biến như một chuẩn trao đổi các văn bản Unicode là kết quả của bản chất 8-bit của nó, và nó là chủ đề của tài liệu này.

UTF-8

UTF-8 là bảng mã ký tự có độ dài biến đổi, mà đối với UTF-8 là từ một đến bốn byte cho một ký hiệu. Vậy, byte UTF-8 đầu tiên được dùng để mã hoá ASCII, bảo đảm tính tương thích ngược hoàn toàn với ASCII. UTF-8 nghĩa là ASCII và các ký tự Latin có thể trao đổi với kích thước tăng lên một chút vì chỉ bit đầu tiên được dùng. Người dùng các bảng mã phương đông như Nhật, được gán một vùng byte cao hơn thì không vui vẻ lắm, vì nó tăng khoảng 50% kích thước dữ liệu.

UTF-8 có thể làm gì cho bạn

UTF-8 cho phép bạn làm việc với chuẩn quốc tế được chấp nhận trong một môi trường đa ngôn ngữ, với tính dư thừa dữ liệu tương đối thấp. UTF-8 được xem như cách yêu thích để gửi dữ liệu phi ASCII qua Internet, thông qua Email, IRC hay các phương tiện khác. Tuy thế, nhiều người xem dùng UTF-8 cho truyền thông trực tuyến là lạm dụng. Do vậy tốt nhất nên nhận thức được phản ứng với UTF-8 trong một số kênh trao đổi, mailing list hoặc Usenet trước khi dùng các ký tự UTF-8 phi ASCII.

Thiết lập UTF-8 với Gentoo Linux
Tìm hoặc tạo locale UTF-8

Giờ bạn đã hiểu các nguyên tắc cơ bản của Unicode, bạn đã sẵn sàng để dùng UTF-8 trong hệ thống của bạn.

Yêu cầu bắt buộc cho UTF-8 là phải cài đặt glibc hỗ trợ national language support. Điều này có nghĩa là tập tin /etc/locales.build cùng với USE flag userlocales. Giải thích cách dùng tập tin này nằm ngoài phạm vi tài liệu này, tuy nhiên tập tin này được mô tả kèm ghi chú. Ngoài ra nó còn được giải thích trong Hướng dẫn bản địa hoá Gentoo Linux.

Giờ chúng ta sẽ quyết định xem locale UTF-8 nào có cho ngôn ngữ của chúng ta, hoặc sẽ tạo mới nếu cần.

(Thay "en_US" với thiết lập locale của bạn)
# locale -a | grep 'en_US'
en_US
en_US.UTF-8

Trong phần kết quả, chúng ta cần có một kết quả có đuôi .UTF-8 hoặc tương tự. Nếu không có, chúng ta sẽ tạo một locale tương thích UTF-8.

Chỉ thực hiện đoạn mã sau nếu bạn không có locale UTF-8 cho ngôn ngữ của bạn.
(Thay "en_US" bằng thiết lập locale của bạn)
# localedef -i en_US -f UTF-8 en_US.UTF-8

Cách khác để thêm locale UTF-8 là thêm vào tập tin /etc/locales.build và xây dựng lại glibc với USE flag userlocales.

en_US.UTF-8/UTF-8
Thiết lập Locale

Có một biến môi trường cần đặt để dùng locale UTF-8: LC_ALL (biến này cũng bỏ qua thiết lập trong LANG). Ngoài ra còn một số cách khác để đặt locale UTF-8; vài người thích chỉ dùng locale UTF-8 cho một số người dùng nhất định, do đó họ đặt thiết lập trong ~/.profile (nếu bạn dùng /bin/sh), ~/.bash_profile hoặc ~/.bashrc (nếu dùng /bin/bash).

Những người khác thích đặt toàn hệ thống. Một trường hợp đặt biệt mà tác giả tài liệu này đặc biệt khuyên dùng là khi dùng /etc/init.d/xdm, ví init script này khởi động trình quản lý đồ hoạ và desktop trước khi dùng các tập tin khởi động shell, vậy nên các thiết lập môi trường không có tác dụng.

Để thiết lập locale toàn cục, nên dùng /etc/env.d/02locale. Tập tin này trông giống như sau:

(Như thường lệ, nhớ đổi "en_US.UTF-8" sang locale của bạn)
LC_ALL="en_US.UTF-8"

Kế tiếp, môi trường phải được cập nhật các thay đổi.

# env-update
>>> Regenerating /etc/ld.so.cache...
 * Caching service dependencies ...
# source /etc/profile

Giờ chạy locale không tham số để xem thiết lập môi trường đã đúng hay chưa:

# locale
LANG=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Tất cả chỉ có thế. Giờ bạn đang dùng locale UTF-8, và bước kế tiếp là cấu hình ứng dụng thường dùng của bạn.

Hỗ trợ ứng dụng

Khi Unicode bắt đầu được để ý trong giới phần mềm, bảng mã nhiều byte vẫn chưa thích hợp với ngôn ngữ như C, trong khi đây lại là ngôn ngữ được dùng nhiều để viết chương trình. Ngay cả ngày nay, vày chương trình vẫn không xử lý đúng UTF-8. May mắn là hầu hết còn lại thì đúng!

Tên tập tin, NTFS, và FAT

Có một số tuỳ chọn NLS trong cấu hình Linux kernel, nhưng quan trong nhất là được để bị rối! Phần quan trọng nhất, điều duy nhất cần làm là tạo UTF-8 NLS support cho kernel, và thay đổi NLS mặc định sang utf8.

File Systems -->
  Native Language Support -->
    (utf8) Default NLS Option
    <*> NLS UTF8
    (Ngoài ra <*> những bảng mã khác được dùng trong hệ
    tập tin FAT hoặc CD-ROM Joilet.)

Nếu bạn định dùng phân vùng NTFS, bạn có thể cần xác định tuỳ chọn nls= khi mount. Nếu bạn định mount phân vùng FAT, bạn có thể cần xác định tuỳ chọn codepage= khi mount. Ngoài ra, bạn có thể cũng cần đặt codepage mặc định cho FAT trong cấu hình kernel. Chú ý rằng tuỳ chọn codepage khi mount sẽ bỏ qua thiết lập kernel.

File Systems -->
  DOS/FAT/NT Filesystems  -->
    (437) Default codepage for fat

Tránh đặt Default iocharset for fat sang UTF-8, vì nó không được khuyên dùng. Thay vào đó, bạn có thể chuyển tuỳ chọn utf8=true khi mount phân vùng FAT. Thông tin chi tiết hơn, vui lòng xem man mount và tài liệu kernel tại /usr/src/linux/Documentation/filesystems/vfat.txt.

Để thay đổi bảng mã tên tập tin, dùng app-text/convmv.

# emerge --ask app-text/convmv
(Dạng thức lệnh)
# convmv -f <current-encoding> -t utf-8 <filename>
(Thay iso-8859-1 bằng bảng mã cần chuyển đổi từ đó)
# convmv -f iso-8859-1 -t utf-8 filename

Để thay đổi nội dung tập tin, dùng tiện ích iconv, đi kèm với glibc:

(Thay iso-8859-1 bằng bảng mã cần chuyển đổi từ đó)
(Kiểm tra kết quả có chính xác không)
# iconv -f iso-8859-1 -t utf-8 filename 
(Chuyển đổi và lưu kết quả vào một tập tin mới)
# iconv -f iso-8859-1 -t utf-8 filename > newfile

app-text/recode cũng có thể được dùng thay vì iconv.

Console hệ thống Bạn cần >=sys-apps/baselayout-1.11.9 để có hỗ trợ Unicode trên console hệ thống.

Để bật UTF-8 trên conaolw, bạn sửa tập tin /etc/rc.conf và đặt UNICODE="yes", ngoài ra bạn cũng cần đọc comment trong tập tin này -- nó rất quan trọng vì bạn cần dùng phông chữ chứa những ký tự bạn định dùng thường xuyên nhất.

Biến KEYMAP, đặt trong /etc/conf.d/keymaps, nên xác định Unicode keymap.

(Thay "uk" bằng layout của bạn)
KEYMAP="uk"
Ncurses và Slang Bỏ qua những thứ liên quan đến Slang trong phần này nếu bạn không cài hoặc không dùng nó.

Thêm USE flag unicode vào USE flag toàn cục trong /etc/make.conf là khôn ngoan, sau đó emerge lại sys-libs/ncursessys-libs/slang nếu cần. Portage sẽ tự động cập nhật hệ thống của bạn:

# emerge --update --deep --newuse world

Ngoài ra bạn cũng nên biên dịch lại những gói liên kết đến hai thư viện này vì giờ USE flag đã thay đổi. Công cụ cần dùng (revdep-rebuild) là một phần của gói gentoolkit.

# revdep-rebuild --soname libncurses.so.5
# revdep-rebuild --soname libslang.so.1
KDE, GNOME và Xfce

Tất cả các môi trường desktop quan trọng đều hỗ trợ Unicode đầy đủ, và không cần làm gì hơn những gì đã đề cập trong tài liệu này, do các bộ công cụ bên dưới (Qt hoặc GTK+2) đều hỗ trợ UTF-8 rất tốt. Điều này dẫn đến các ứng dụng dùng các bộ công cụ này cũng hỗ trợ UTF-8 tốt.

Ngoại lệ bao gồm Xlib và GTK+1. GTK+1 cần iso-10646-1 FontSpec trong ~/.gtkrc, ví dụ -misc-fixed-*-*-*-*-*-*-*-*-*-*-iso10646-1. Ngoài ra, ứng dụng dùng Xlib hoặc Xaw cần FontSpec tương tự, nếu không chúng không hoạt động.

Nếu bạn dùng phiên bản gnome1 control center, hãy dùng nó. Chọn bất kỳ phông iso10646-1 nào từ đó.
style "user-font"
{
    fontset="-misc-fixed-*-*-*-*-*-*-*-*-*-*-iso10646-1"
}
widget_class "*" style "user-font"

Nếu ứng dụng hỗ trợ cả Qt và GTK+2 GU, GTK+2 GUI sẽ cho kết quả Unicode tốt hơn.

X11 và phông chữ x11-base/xorg-x11 hỗ trợ Unicode tốt hơn nhiều so với XFree86 và rất nên dùng.

Phông TrueType hỗ trợ Unicode và hầu hết các phông hiên tại trong Xorg có một lượng ký tự ấn tượng, mặc dù dĩ nhiên, không phải tất các các ký tự trong Unicode. Để tạo các phông chữ (bao gồm bộ Bitstream Vera) hỗ trợ bộ ký tự Đông Á với X, thêm USE flag cjk vào khi cài đặt. Những ứng dụng khác cũng có thể tận dụng USE flag này, vậy tốt hơn là thêm nó vào làm USE flag toàn cục.

Ngoài ra còn có vài phông chữ hỗ trợ Unicode trong Portage.

# emerge terminus-font intlfonts freefonts cronyx-fonts corefonts urwvn-fonts
Trình quản lý cửa sổ và Terminal

Các trình quản lý cửa sổ dựa trên GTK hoặc Qt thường hỗ trợ Unicode rất tốt, vì chúng dùng thư viện Xft để xử lý phông chữ. Nếu trình quản lý cửa sổ của bạn không dùng Xft, bạn vẫn có thể dùng FontSpec đã đề cập trong phần trước cho phông chữ Unicode.

Terminal hỗ trợ Xft và Unicode thường khó tìm hơn. Ngoài Konsole và gnome-terminal, những tuỳ chọn tốt nhất trong Portage là x11-terms/rxvt-unicode, xfce-extra/terminal, gnustep-apps/terminal, x11-terms/mlterm, hoặc đơn giản x11-terms/xterm với USE flag unicode và được gọi dưới tên uxterm. app-misc/screen cũng hỗ trợ UTF-8, khi gọi bằng screen -U hoặc thêm dòng sau vào ~/.screenrc:

defutf8 on
Vim, Emacs, Xemacs và Nano

Vim hỗ trợ UTF-8 tốt, và tự động nhận dạng tập tin UTF-8. Thông tin chi tiết, xem :help mbyte.txt.

Emacs 22.x về sau hỗ trợ UTF-8 tốt. Xemacs 22.x chưa hỗ trợ các ký tự tổ hợp.

Phiên bản cũ hơn của Emacs và/hoặc Xemacs có thể cần cài đặt app-emacs/mule-ucs và/hoặc app-xemacs/mule-ucs và thêm đoạn mã sau vào ~/.emacs của bạn để hỗ trợ CJK trong UTF-8:

(require 'un-define)
(require 'jisx0213)
(set-language-environment "Japanese")
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)

Nano hiện thời không hỗ trợ UTF-8, mặc dù nó đã được dự định trong thời gian dài. Hy vọng nó sẽ thay đổi trong thời gian gần. Vào lúc viết tài liệu này, hỗ trợ UTF-8 trong Nano đã có trong CVS, sẽ có trong phiên bản kế tiếp.

Shell

Hiện thời bash hỗ trợ tốt Unicode thông qua thư viện GNU readline. Z Shell không bằng -- không phần nào của shell hỗ trợ Unicode mặc dù sắp hỗ trợ các bảng mã nhiều byte.

C shell, tcshksh hoàn toàn không hỗ trợ Unicode.

Irssi

Irssi hỗ trợ UTF-8 tốt, mặc dù cần đặt tuỳ chọn.

/set term_type UTF-8

Với các kênh trao đổi các ký tự phi ASCII theo dạng thức không phải UTF-8, dùng /recode để chuyển đổi bảng mã. Gõ /help recode để biết thêm.

Mutt

Mutt hỗ trợ Unicode rất tốt. Để dùng UTF-8 với Mutt, bạn không cần phải sửa gì tập tin cấu hình. Mutt sẽ hoạt động trong môi trường Unicode mà không cần sửa gì nếu mọi tập tin cấu hình của bạn (kể cả chữ ký) đều mã hoá UTF-8.

Bạn có thể vẫn thấy '?' trong mail khi đọc bằng Mutt. Đây là kết quả của những người dùng mail client không chỉ rõ bảng mã được dùng. Bạn không thể làm gì nhiều hơn là yêu cầu họ cấu hình lại client của họ cho đúng.

Thông tin chi tiết hơn có tạ Mutt Wiki.

Less

Chúng ta dùng rất nhiều more hoặc less với | để xem kết quả của lệnh, như dmesg | less. Trong khi more chỉ cần shell hiểu UTF-8, less cần đặt biến môi trường LESSCHARSET để bảo đảm hiển thị đúng Unicode. Có thể đặt biến này trong /etc/profile hoặc ~/.bash_profile. Dùng trình soạn thảo của bạn và thêm dòng sau voào một trong hai tập tin đã đề cập.

LESSCHARSET=utf-8
Man

Các trang man là một phần không thể tách rời của Linux. Để bảo đảm bất kỳ ký tự Unicode nào trên trang man hiển thị đúng, sửa /etc/man.conf và thay một dòng như bên dưới.

(Đây là dòng cũ)
NROFF           /usr/bin/nroff -Tascii -c -mandoc
(Đây là dòng mới)
NROFF           /usr/bin/nroff -mandoc -c
elinks và links

Đây là hai trình duyệt web văn bản thông dụng, chúng ta sẽ xem cách bật hỗ trợ UTF-8 cho chúng. Trên elinkslinks, có hai cách để làm, một là dùng tuỳ chọn Setup từ trong trình duyệt hoặc hiệu chỉnh tập tin cấu hình. Để đặt tuỳ chọn từ trình duyệt, mở một trang với elinks hoặc links và sau đó Alt+S để mở menu Setup, chọn tuỳ chọn Terminal, hoặc nhấn T. Cuộn xuống và chọn tuỳ chọn UTF-8 I/O bằng cách nhấn Enter. Lưu lại và thoát khỏi menu. Trên links bạn phải lặp lại Alt+S rồi nhấn S để lưu. Tập tin cấu hình được hiển thị bên dưới.

(Với elinks, sửa /etc/elinks/elinks.conf hoặc ~/.elinks/elinks.conf và thêm dòng sau)
set terminal.linux.utf_8_io = 1

(Với links, sửa ~/.links/links.cfg và thêm dòng sau)
terminal "xterm" 0 1 0 us-ascii utf-8
Thử nghiệm

Có một số trang web để kiểm tra UTF-8. net-www/w3m, net-www/links, net-www/elinks, net-www/lynx và mọi trình duyệt Web dựa trên Mozilla (bao gồm Firefox) đều hỗ trợ UTF-8. Konqueror và Option cũng hỗ trợ UTF-8.

Khi dùng một trong những trình duyệt web văn bản trên, nhớ dùng terminal hỗ trợ Unicode.

Nếu bạn thấy một số ký tự hiện ô vuông với con số bên trong, nghĩa là phông chữ không có ký tự đó. Bởi vậy, nó hiển thị ô vuông với mã thập lục phân của ký tự UTF-8 đó.

  • A W3C UTF-8 Test Page
  • A UTF-8 test page provided by the University of Frankfurt
Kiểu gõ

Dead key có thể dùng để nhập các ký tự X không có trên bàn phím. Phím này hoặc động bằng cách nhấn Alt phải (ở vài nước là AltGr) và một phím tuỳ chọn khác từ phần không nằm trong bảng chữ cái của bàn phím sang bên trái phím Enter cùng lúc, rồi nhả ra, sau đó nhấn một ký tự. Dead key sẽ thay đổi ký tự đó. Ký tự nhập có thể thay đổi bằng cách dùng phím Shift khi gõ AltGr và modifer.

Để bật dead key trong X, bạn cần có một layout hỗ trợ nó. Hầu hết layout châu Âu đã hỗ trợ dead key với nhiều mặc định khác nhau. Tuy nhiên, điều đó không đúng với layout Bắc Mỹ. Mặc dù có một số chỗ không thống nhất giữa các layout, cách dễ nhất là dùng layout theo mẫu "en_US" thay vì "us" như ví dụ. Layout được đặt trong /etc/X11/xorg.conf như sau:

Section "InputDevice"
    Identifier "Keyboard0"
    Driver     "kbd"
    Option     "XkbLayout" "en_US" # thay vì chỉ "us"
    (Tuỳ chọn Xkb khác ở đây)
EndSection
Các thay đổi ở trên chỉ áp dụng với layout Bắc Mỹ, hoặc layout khác mà dead key không hoạt động. Người dùng châu Âu có dead key hoạt động sẵn rồi.

Thay đổi này sẽ có tác động sau khi khởi động lại X server. Để áp dụng thảy đổi ngay tức thời, dùng setxkbmap, ví dụ, setxkbmap en_US.

Có lẽ dễ nhất là mô tả dead key bằng ví dụ. Mặc dù kết quả tuỳ theo locale, khái niệm vẫn giống nhau. Ví dụ chứa ký tự UTF-8, nên để có thể cần trình duyệt có thể xem UTF-8 hoặc đã cấu hình locale UTF-8.

Khi nhấn AltGr[ cùng lúc, nhả ra, rồi nhấn a, ta được 'ä'. Khi nhấn AltGr[ cùng lúc, nhả ra, rồi nhấn e, ta được 'ë'. Khi nhấn AltGr; cùng lúc, ta được 'á'. Khi nhấn AltGr; cùng lúc, sau đó nhả ra và nhấn e, ta được 'é'.

Khi nhấn AltGr, Shift[ cùng lúc, nhả ra, và nhấn a, ta được ký tự Scandinavian 'å'. Tương tự khi nhấn AltGr, Shift[ cùng lúc, nhả chỉ [, rồi nhấn tiếp lần nữa, ta được '˚'. Mặc dù nó có vẻ giống nhau nhưng ký tự này (U+02DA) không giống ký hiệu độ (U+00B0). Nó chỉ hoạt động với [, nhấn lần nữa sẽ tạo ra '¨'.

AltGr có thể được dùng một mình với các phím bảng chữ cái. Ví dụ AltGrm, ta được 'µ'. AltGrs ra 'ß'. Một số người dùng châu Âu mong đợi (vì bàn phím họ đánh dấu như thế), AltGr4 (hoặc E, tuỳ bàn phím) ra ký hiệu Euro, '€'.

Tài nguyên
  • The Wikipedia entry for Unicode
  • The Wikipedia entry for UTF-8
  • Unicode.org
  • UTF-8.com
  • RFC 3629
  • RFC 2277
  • Characters vs. Bytes