idn2\_lookup\_u8(3) libidn2 idn2\_lookup\_u8(3)

# [NAME](#NAME)

idn2\_lookup\_u8 - API function

# [SYNOPSIS](#SYNOPSIS)

**#include &lt;idn2.h&gt;**

**int idn2\_lookup\_u8(const uint8\_t * src, uint8\_t \** lookupname, int flags);**

# [ARGUMENTS](#ARGUMENTS)

[const uint8\_t * src](#const)

input zero-terminated UTF-8 string in Unicode NFC normalized form.

[uint8\_t \** lookupname](#uint8_t)

newly allocated output variable with name to lookup in DNS.

[int flags](#int)

optional **idn2\_flags** to modify behaviour.

# [DESCRIPTION](#DESCRIPTION)

Perform IDNA2008 lookup string conversion on domain name *src* , as described in section 5 of RFC 5891. Note that the input string must be encoded in UTF-8 and be in Unicode NFC form.

Pass **IDN2\_NFC\_INPUT** in *flags* to convert input to NFC form before further processing. **IDN2\_TRANSITIONAL** and **IDN2\_NONTRANSITIONAL** do already imply **IDN2\_NFC\_INPUT**.

Pass **IDN2\_ALABEL\_ROUNDTRIP** in *flags* to convert any input A-labels to U-labels and perform additional testing. This is default since version 2.2. To switch this behavior off, pass IDN2\_NO\_ALABEL\_ROUNDTRIP

Pass **IDN2\_TRANSITIONAL** to enable Unicode TR46 transitional processing, and **IDN2\_NONTRANSITIONAL** to enable Unicode TR46 non-transitional processing.

Multiple flags may be specified by binary or:ing them together.

After version 2.0.3: **IDN2\_USE\_STD3\_ASCII\_RULES** disabled by default. Previously we were eliminating non-STD3 characters from domain strings such as \_443.\_tcp.example.com, or IPs 1.2.3.4/24 provided to libidn2 functions. That was an unexpected regression for applications switching from libidn and thus it is no longer applied by default. Use **IDN2\_USE\_STD3\_ASCII\_RULES** to enable that behavior again.

After version 0.11: *lookupname* may be NULL to test lookup of *src* without allocating memory.

# [RETURNS](#RETURNS)

On successful conversion **IDN2\_OK** is returned, if the output domain or any label would have been too long **IDN2\_TOO\_BIG\_DOMAIN** or **IDN2\_TOO\_BIG\_LABEL** is returned, or another error code is returned.

# [SINCE](#SINCE)

0.1

# [REPORTING BUGS](#REPORTING_BUGS)

Report bugs to &lt;help-libidn@gnu.org&gt;.  
General guidelines for reporting bugs: https://www.gnu.org/gethelp/  
Libidn2 home page: https://www.gnu.org/software/libidn2/

# [COPYRIGHT](#COPYRIGHT)

Copyright © 2002-2025 Simon Josefsson.  
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.

# [SEE ALSO](#SEE_ALSO)

The full documentation for **libidn2** is maintained as a Texinfo manual. If the **info** and **libidn2** programs are properly installed at your site, the command

**info libidn2**

should give you access to the complete manual. As an alternative you may obtain the manual from:

**https://www.gnu.org/software/libidn/libidn2/manual/**

2.3.8 libidn2

---

Document: idn2_lookup_u8(3) from libidn2 2.3.8-r12 (Chainguard OS)
Source: https://gitlab.com/libidn/libidn2
