Artikel ini perluditerjemahkan ke bahasa Indonesia. Artikel ini ditulis atau diterjemahkan secaraburuk dari Wikipedia bahasa selain Indonesia. Jika halaman ini ditujukan untuk komunitas berbahasa tersebut, halaman itu harus dikontribusikan ke Wikipedia bahasa tersebut. Lihatdaftar bahasa Wikipedia. Artikel yang sama sekali tidak diterjemahkan dapat dihapus secara cepatsesuai kriteria A2. Jika Anda ingin memeriksa artikel ini, Anda boleh menggunakan mesin penerjemah. Namun ingat,mohon tidak menyalin hasil terjemahan tersebut ke artikel, karena umumnya merupakan terjemahan berkualitas rendah. |
Dalam komputasi,Punycode adalah sebuah perwujudan dari sintaks pengkodean umum (Bootstring), dengan karakterUnicode diubah dengan unik dan dapat dikembalikan, ke dalamhimpunan karakter yang lebih kecil dan ketat.
Punycode ditujukan untuk pengkodean label dalam kerangka kerjaInternationalized Domain Names in Applications (IDNA), sedemikian hingga nama domain tersebut dapat direpresentasikan dalam himpunan karakterASCII yang diperbolehkan dalamsistem penamaan domain dariInternet. Sintaks pengkodean didefinisikan dalamdokumenIETFRFC 3492.[1]
Metodologi IDNA mengkodekan hanya label komponen nama domain dengan prosedur yang disebutToASCII. ProsedurToUnicode mengartikan kode label DNS ke dalam representasi Unicode.
Bagian ini menunjukkan langkah-langkah untuk pengkodean Punycode, menggunakan contoh string "bücher" (bahasa Jerman untukbuku), yang diterjemahkan menjadi label "bcher-kva".
Pertama, semua karakter dasar (ASCII) dalam string disalin langsung dari input ke output, melewatkan karakter lainnya (misalnya, "bücher" → "bcher"). Jika satu atau lebih karakter dasar disalin, sebuah tanda hubung (hyphen) ASCII ditambahkan ke dalam output berikutnya (misalnya, "bücher" → "bcher-"). Karena ini adalah sebuah karakter dasar, maka tanda hubung mungkin akan masih tampil dalam string sebelum karakter tambahan ini, namun penambahan tidak akan membuat ambiguitas—tidak ada bagian selanjutnya dari proses pengkodean ini yang memperkenalkan "-" yang lain, maka "-" terakhir (bila ada) selalu merupakan tanda hubung yang menandakan akhir karakter dasar.
Bagian berikutnya dari proses pengkodean, pertama memerlukan pemahaman tentang pemecahan kode, yang merupakanfinite-state machine dengan dua variabel,i dann.i adalah indeks di dalam string yang bernilai dari nol (menggambarkan kemungkinan penambahan pada awal) sampai dengan panjang saat ini dari string yang telah ditambahkan (menggambarkan kemungkinan penambahan pada akhir).
i dimulai dari nol, sedangkann dimulai dari 128 (poin kode pertama yang bukan ASCII).Progress daristate merupakanfungsi monotonik. Perubahanstate dengan cara menambahkan dengani secara berulang, atau jikai telah berada dalam maksimumnya, dengan me-reseti menjadi nol dan menambahkan berulang dengann. Pada setiap perubahan state, poin kode yang disimbolkan dengann dapat ditambahkan atau dapat tidak ditambahkan.
Nomor kode yang diciptakan oleh pengkode menggambarkan berapa banyaknya kemungkinan pengembali kode harus melewatkan sebelum melakukan penyisipan. "ü" memiliki poin kode 252.
![]() | Bagian ini memerlukanpengembangan. Anda dapat membantu denganmengembangkannya. |
Punycode dirancang untuk bekerja pada seluruh skrip, dan untuk mengoptimisasi dirinya sendiri dengan cara mencoba menyesuaikan dengan jangkauan himpunan karakter di dalam string yang beroperasi. Punycode dioptimisasikan untuk kasus string yang terdiri dari nol atau lebih karakter ASCII dan dalam karakter tambahan dari hanya satu sistem skrip, namum dapat menangani segala jenis string Unicode. Perlu dicatat bahwa untuk penggunaan DNS, string nama domain dianggap telah dinormalisasi menggunakanNameprep dan (untukranah Internet tingkat teratas) disaring sebelum dilakukan punycode, dan bahwa protokol DNS menetapkan batas panjang yang dapat diterima dari string Punycode output.