Chuẩn xứ lý tên miền đa ngữ (IDNA - Internationalizing Domain Names in Applications) xử lý tên miền đa ngữ tại các chương trình ứng dụng.
Sơ đồ xử lý tên miền đa ngữ đuợc cho trong hình dưới đây:
Quá trình thực hiện nameprep và mã hoá tên miền được thực hiện thông qua giao diện lập trình ứng dụng API là giao diện mà chương trình ứng dụng và resolver giao tiếp với nhau.
1. Các quá trình diễn ra khi thực hiện nameprep
Người sử dụng có thể nhập tên miền vào các chương trình ứng dụng theo các kiểu và phương pháp mã hoá khác nhau. Phụ thuộc vào phương pháp mã hoá, cách thức nhập dữ liệu, các ký tự trong tên miền có thể là hoặc không là các ký tự được cho phép trong tên miền đa ngữ. Do đó cần có một quá trình để qui chuẩn các ký tự này thành các ký tự được dùng trong tên miền đa ngữ.
Quá trình qui chuẩn này gồm có
Các bước được tiến hành trong quá trình nameprep
Map -> normalized ->prohibit
a. Map
Các ký tự trong chuỗi ký tự được nhập vào sẽ được kiểm tra với một bảng map để thực hiện map các ký tự được nhập vào từ chương trình ứng dụng thành các ký tự có thể được sử dụng trong hệ thống tên miền đa ngữ.
Tại bước này, các ký tự không được dùng trong tên miền đa ngữ sẽ được mapping thành ký tự rỗng.
Các bước trong quá trình thực hiện mapping:
Case maching: Quá trình xem xét và đồng nhất các ký tự khi được viết hoa hay viết thường.
Case-folding: Đây là quá trình qui chuẩn các ký tự giống nhau nhưng có mã khác nhau về một mã duy nhất. Ví dụ như trường hợp chữ i đã nêu ở trên, khi người sử dụng gõ chữ i, tuỳ theo chương trình mà chữ i sẽ được mã hoá với mã khác nhau, do vậy nếu tên miền có chữ i, tên miền này phải được case-folding thành một chữ i có mã duy nhất trước khi gửi đi.
Chuyển đổi các ký tự viết hoa thành các ký tự không viết hoa
Các ký tự nhận được sẽ được kiểm tra và thực hiện chuyển đổi các ký tự viết hoa thành các ký tự không viết hoa. Quá trình chuyển đổi này được thực hiện theo bảng mapping.
Loại bỏ các ký tự không được dùng trong tên miền.
Trong các ký tự nhận được từ chương trình ứng dụng sẽ có các ký tự mà khi xuất hiệt trong thành phần tên miền sẽ gây nhầm lẫn giữa các tên miền, do đó các ký tự này cần được loại bỏ:
00AD; SOFT HYPHEN
1806; MONGOLIAN TODO SOFT HYPHEN
200B; ZERO WIDTH SPACE
FEFF; ZERO WIDTH NO-BREAK SPACE
180B; MONGOLIAN FREE VARIATION SELECTOR ONE
180C; MONGOLIAN FREE VARIATION SELECTOR TWO
180D; MONGOLIAN FREE VARIATION SELECTOR THREE
200C; ZERO WIDTH NON-JOINER
200D; ZERO WIDTH JOINER
b. Normalization
Dữ liệu sau quá trình mapping được thực hiện normalization theo form Kc.
Sau quá trình mapping là quá trình normalization để thực hiện chuyển đổi các ký tự các ký tự giống nhau hoặc gần giống nhau thành một ký tự đơn.
c. Prohibitted
Quá trình cuối cùng trước khi tên miền được mã hoá là kiểm tra để loại bỏ các ký tự không được phép sử dụng trong tên miền. Các ký tự cần loại bỏ gồm có:
Các ký tự không được dùng trong tên miền vì đã được sử dụng trong các giao thức liên quan đến tên miền:
0000-002C; [ASCII]
002E-002F; [ASCII]
003A-0040; [ASCII]
005B-0060; [ASCII]
007B-007F; [ASCII]
Các ký tự space:
0020; SPACE
00A0; NO-BREAK SPACE
2000; EN QUAD
2001; EM QUAD
2002; EN SPACE
2003; EM SPACE
2004; THREE-PER-EM SPACE
2005; FOUR-PER-EM SPACE
2006; SIX-PER-EM SPACE
2007; FIGURE SPACE
2008; PUNCTUATION SPACE
2009; THIN SPACE
200A; HAIR SPACE
202F; NARROW NO-BREAK SPACE
3000; IDEOGRAPHIC SPACE
1680; OGHAM SPACE MARK
200B; ZERO WIDTH SPACE
Các ký tự điều khiển
0020; SPACE
00A0; NO-BREAK SPACE
2000; EN QUAD
2001; EM QUAD
2002; EN SPACE
2003; EM SPACE
2004; THREE-PER-EM SPACE
2005; FOUR-PER-EM SPACE
2006; SIX-PER-EM SPACE
2007; FIGURE SPACE
2008; PUNCTUATION SPACE
2009; THIN SPACE
200A; HAIR SPACE
202F; NARROW NO-BREAK SPACE
3000; IDEOGRAPHIC SPACE
1680; OGHAM SPACE MARK
200B; ZERO WIDTH SPACE
Các ký tự dùng riêng
E000-F8FF; [PRIVATE USE, PLANE 0]
F0000-FFFFD; [PRIVATE USE, PLANE 15]
100000-10FFFD; [PRIVATE USE, PLANE 16]
Các ký tự không được dùng trong plaintext:
FFF9; INTERLINEAR ANNOTATION ANCHOR
FFFA; INTERLINEAR ANNOTATION SEPARATOR
FFFB; INTERLINEAR ANNOTATION TERMINATOR
FFFC; OBJECT REPLACEMENT CHARACTER
Các ký tự làm thay đổi thứ tự của các chữ trong tên miền:
200E; LEFT-TO-RIGHT MARK
200F; RIGHT-TO-LEFT MARK
202A; LEFT-TO-RIGHT EMBEDDING
202B; RIGHT-TO-LEFT EMBEDDING
202C; POP DIRECTIONAL FORMATTING
202D; LEFT-TO-RIGHT OVERRIDE
202E; RIGHT-TO-LEFT OVERRIDE
206A; INHIBIT SYMMETRIC SWAPPING
206B; ACTIVATE SYMMETRIC SWAPPING
206C; INHIBIT ARABIC FORM SHAPING
206D; ACTIVATE ARABIC FORM SHAPING
206E; NATIONAL DIGIT SHAPES
206F; NOMINAL DIGIT SHAPES
2. Encoding
Sau quá trình nameprep để thực hiện chuẩn hoá tên miền, tên miền đa ngữ sẽ được thực hiện mã hoá theo mã unicode hay mã ACE (ASCII compatible encoding). Mã Punny code (xem chi tiết tại RFC 3492) hiện đang được sử dụng để mã hóa tên miền đa ngữ sang dang mã hóa chuẩn ACE.
Ví dụ :
Tên miền tênmiềntiếngviệt.vn khi được mã hóa sang dạng mã Puny Code sẽ là :
xn--tnmintingvit-oeb8308h0a8h.vn