Fungsi IdnToUnicode (winnls.h)

Mengonversi bentuk Punycode dari nama domain internasional (IDN) atau label internasional lainnya ke sintaks pengodean Unicode UTF-16 normal.

Hati Fungsi ini mengimplementasikan algoritma standar RFC 3490: Internationalizing Domain Names in Applications (IDNA) untuk pengodean Punycode Unicode. Standar memperkenalkan beberapa masalah keamanan. Salah satu masalahnya adalah bahwa glyph yang mewakili karakter tertentu dari skrip yang berbeda mungkin tampak serupa atau bahkan identik. Misalnya, dalam banyak font, huruf kecil Sirilik A ("а") tidak dapat dibedakan dari huruf kecil Latin A ("a"). Tidak ada cara untuk memberi tahu secara visual bahwa "example.com" dan "exа mple.com" adalah dua nama domain yang berbeda, satu dengan huruf kecil Latin A dalam namanya, yang lain dengan huruf kecil Sirilik A. Untuk informasi selengkapnya tentang masalah keamanan terkait IDN, lihat Menangani Nama Domain Internasional (IDN).

 

Sintaks

int IdnToUnicode(
  [in]            DWORD   dwFlags,
  [in]            LPCWSTR lpASCIICharStr,
  [in]            int     cchASCIIChar,
  [out, optional] LPWSTR  lpUnicodeCharStr,
  [in]            int     cchUnicodeChar
);

Parameter

[in] dwFlags

Bendera yang menentukan opsi konversi. Untuk definisi terperinci, lihat parameter dwFlagsidnToAscii.

[in] lpASCIICharStr

Penunjuk ke string yang mewakili pengodean Punycode dari IDN atau label internasional lainnya. String ini hanya boleh terdiri dari karakter ASCII, dan dapat menyertakan Unicode yang dikodekan Punycode. Fungsi ini mendekode nilai Punycode ke nilai UTF-16 mereka.

[in] cchASCIIChar

Jumlah karakter dalam string input yang ditunjukkan oleh lpASCIICharStr.

[out, optional] lpUnicodeCharStr

Penunjuk ke buffer yang menerima pengodean Unicode UTF-16 normal yang setara dengan nilai Punycode dari string input. Atau, fungsi dapat mengambil NULL untuk parameter ini, jika cchUnicodeChar diatur ke 0. Dalam hal ini, fungsi mengembalikan ukuran yang diperlukan untuk buffer ini.

[in] cchUnicodeChar

Ukuran, dalam karakter, dari buffer yang ditunjukkan oleh lpUnicodeCharStr. Aplikasi dapat mengatur ukuran ke 0 untuk mengambil NULL di lpUnicodeCharStr dan meminta fungsi mengembalikan ukuran buffer yang diperlukan.

Mengembalikan nilai

Mengembalikan jumlah karakter yang diambil dalam lpUnicodeCharStr jika berhasil. String yang diambil dihentikan null hanya jika string input dihentikan null.

Jika fungsi berhasil dan nilai cchUnicodeChar adalah 0, fungsi mengembalikan ukuran yang diperlukan, dalam karakter termasuk karakter null yang mengakhiri jika merupakan bagian dari buffer input.

Fungsi mengembalikan 0 jika tidak berhasil. Untuk mendapatkan informasi kesalahan yang diperluas, aplikasi dapat memanggil GetLastError, yang dapat mengembalikan salah satu kode kesalahan berikut:

  • ERROR_INSUFFICIENT_BUFFER. Ukuran buffer yang disediakan tidak cukup besar, atau salah diatur ke NULL.
  • ERROR_INVALID_FLAGS. Nilai yang diberikan untuk bendera tidak valid.
  • ERROR_INVALID_NAME. Nama yang tidak valid diberikan ke fungsi. Perhatikan bahwa kode kesalahan ini menangkap semua kesalahan sintaks.
  • ERROR_INVALID_PARAMETER. Salah satu nilai parameter tidak valid.
  • ERROR_NO_UNICODE_TRANSLATION. Unicode tidak valid ditemukan dalam string.

Keterangan

Lihat Keterangan untuk IdnToAscii.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header winnls.h (termasuk Windows.h)
Pustaka Normaliz.lib
DLL Normaliz.dll
Redistribusi API Mitigasi Nama Domain Internasional Microsoft (IDN) diWindows XP dengan SP2 dan yang lebih baru, atauWindows Server 2003 dengan SP1

Lihat juga

Menangani Nama Domain Internasional (IDN)

IdnToAscii

IdnToNameprepUnicode

Dukungan Bahasa Nasional

Fungsi Dukungan Bahasa Nasional