---
name: "idn2_register_u8"
section: "3"
platform: "linux"
package: "libidn2"
version: "2.3.8-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/idn2_register_u8"
---

# idn2\_register\_u8(3)

API function

## NAME

idn2\_register\_u8 - API function

## SYNOPSIS

**#include \<idn2.h\>**

**int idn2\_register\_u8(const uint8\_t \*** *ulabel***, const uint8\_t \*** *alabel***, uint8\_t \*\*** *insertname***, int** *flags***);**

## ARGUMENTS

- const uint8\_t \* ulabel

  input zero-terminated UTF-8 and Unicode NFC string, or NULL.

- const uint8\_t \* alabel

  input zero-terminated ACE encoded string (xn--), or NULL.

- uint8\_t \*\* insertname

  newly allocated output variable with name to register in DNS.

- int flags

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

## DESCRIPTION

Perform IDNA2008 register string conversion on domain label  *ulabel* and  *alabel* , as described in section 4 of RFC 5891.  Note that the input  *ulabel* must be encoded in UTF-8 and be in Unicode NFC form.

Pass **IDN2\_NFC\_INPUT** in  *flags* to convert input  *ulabel* to NFC form before further processing.

It is recommended to supply both  *ulabel* and  *alabel* for better error checking, but supplying just one of them will work.  Passing in only  *alabel* is better than only  *ulabel* .  See RFC 5891 section 4 for more information.

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

## RETURNS

On successful conversion **IDN2\_OK** is returned, when the given  *ulabel* and  *alabel* does not match each other **IDN2\_UALABEL\_MISMATCH** is returned, when either of the input labels are too long **IDN2\_TOO\_BIG\_LABEL** is returned, when  *alabel* does does not appear to be a proper A-label **IDN2\_INVALID\_ALABEL** is returned, or another error code is returned.

## REPORTING BUGS

Report bugs to \<help-libidn@gnu.org\>.\
 General guidelines for reporting bugs: https://www.gnu.org/gethelp/\
 Libidn2 home page: https://www.gnu.org/software/libidn2/

## 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

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/**
