IdnToUnicode 関数 (winnls.h)

国際化ドメイン名 (IDN) または別の国際化されたラベルの Punycode 形式を、通常の Unicode UTF-16 エンコード構文に変換します。

注意 この関数は、Unicode の Punycode エンコード用の RFC 3490: Applications (IDNA) 標準アルゴリズムでのドメイン名の国際化 を実装します。 この標準では、いくつかのセキュリティの問題が導入されています。 1 つの問題は、異なるスクリプトの特定の文字を表すグリフが似ているか、同一のように見えることです。 たとえば、多くのフォントでは、キリル小文字 A ("а") はラテン小文字 A ("a") と区別できません。 "example.com" と "exа mple.com" は 2 つの異なるドメイン名であり、1 つはラテン小文字 A、もう 1 つはキリル小文字 A であることを視覚的に伝える方法はありません。IDN 関連のセキュリティ上の懸念事項の詳細については、「 国際化ドメイン名 (IDN) の処理」を参照してください。

 

構文

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

パラメーター

[in] dwFlags

変換オプションを指定するフラグ。 詳細な定義については、IdnToAsciidwFlags パラメーターを参照してください。

[in] lpASCIICharStr

IDN またはその他の国際化されたラベルの Punycode エンコードを表す文字列へのポインター。 この文字列は ASCII 文字のみで構成する必要があり、Punycode でエンコードされた Unicode を含めることができます。 関数は、Punycode 値を UTF-16 値にデコードします。

[in] cchASCIIChar

lpASCIICharStr で示される入力文字列内の文字数。

[out, optional] lpUnicodeCharStr

入力文字列の Punycode 値に相当する通常の Unicode UTF-16 エンコードを受け取るバッファーへのポインター。 または、cchUnicodeChar が 0 に設定されている場合、このパラメーターの NULL を取得することもできます。 この場合、 関数は、このバッファーに必要なサイズを返します。

[in] cchUnicodeChar

lpUnicodeCharStr で示されるバッファーのサイズ (文字数)。 アプリケーションでは、サイズを 0 に設定して lpUnicodeCharStr 内の NULL を取得し、関数から必要なバッファー サイズを返すことができます。

戻り値

成功した場合に lpUnicodeCharStr で取得された文字数を返します。 取得した文字列は、入力文字列が null で終わる場合にのみ null で終了します。

関数が成功し、 cchUnicodeChar の値が 0 の場合、関数は、入力バッファーの一部である場合は、終端の null 文字を含む文字で、必要なサイズを返します。

成功しなかった場合、関数は 0 を返します。 拡張エラー情報を取得するために、アプリケーションは GetLastError を呼び出すことができます。このエラー コードは、次のいずれかのエラー コードを返すことができます。

  • ERROR_INSUFFICIENT_BUFFER。 指定されたバッファー サイズが十分な大きさではなかったか、 正しく NULL に設定されていません。
  • ERROR_INVALID_FLAGS。 フラグに指定された値が無効です。
  • ERROR_INVALID_NAME。 関数に無効な名前が指定されました。 このエラー コードでは、すべての構文エラーがキャッチされることに注意してください。
  • ERROR_INVALID_PARAMETER。 パラメーター値のいずれかが無効です。
  • ERROR_NO_UNICODE_TRANSLATION。 文字列に無効な Unicode が見つかりました。

注釈

「IdnToAscii の解説」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー winnls.h (Windows.h を含む)
Library Normaliz.lib
[DLL] Normaliz.dll
再頒布可能パッケージ Microsoft Internationalized Domain Name (IDN) 軽減 API on Windows XP with SP2 以降、または Windows Server 2003 sp1

こちらもご覧ください

国際化ドメイン名 (IDN) の処理

IdnToAscii

IdnToNameprepUnicode

各国語サポート

各国語サポート関数