Uchar(3) OCaml library Uchar(3)

# [NAME](#NAME)

Uchar - Unicode characters.

# [Module](#Module)

Module Uchar

# [Documentation](#Documentation)

Module **Uchar**  
: **sig end**

Unicode characters.

**Since** 4.03

*type t*

The type for Unicode characters.

A value of this type represents a Unicode scalar value which is an integer in the ranges **0x0000** ... **0xD7FF** or **0xE000** ... **0x10FFFF** .

*val min* : **t**

**min** is U+0000.

*val max* : **t**

**max** is U+10FFFF.

*val bom* : **t**

**bom** is U+FEFF, the byte order mark (BOM) character.

**Since** 4.06.0

*val rep* : **t**

**rep** is U+FFFD, the replacement character.

**Since** 4.06.0

*val succ* : **t -&gt; t**

**succ u** is the scalar value after **u** in the set of Unicode scalar values.

**Raises Invalid\_argument** if **u** is **Uchar.max** .

*val pred* : **t -&gt; t**

**pred u** is the scalar value before **u** in the set of Unicode scalar values.

**Raises Invalid\_argument** if **u** is **Uchar.min** .

*val is\_valid* : **int -&gt; bool**

**is\_valid n** is **true** if and only if **n** is a Unicode scalar value (i.e. in the ranges **0x0000** ... **0xD7FF** or **0xE000** ... **0x10FFFF** ).

*val of\_int* : **int -&gt; t**

**of\_int i** is **i** as a Unicode character.

**Raises Invalid\_argument** if **i** does not satisfy **Uchar.is\_valid** .

*val to\_int* : **t -&gt; int**

**to\_int u** is **u** as an integer.

*val is\_char* : **t -&gt; bool**

**is\_char u** is **true** if and only if **u** is a latin1 OCaml character.

*val of\_char* : **char -&gt; t**

**of\_char c** is **c** as a Unicode character.

*val to\_char* : **t -&gt; char**

**to\_char u** is **u** as an OCaml latin1 character.

**Raises Invalid\_argument** if **u** does not satisfy **Uchar.is\_char** .

*val equal* : **t -&gt; t -&gt; bool**

**equal u u'** is **u = u'** .

*val compare* : **t -&gt; t -&gt; int**

**compare u u'** is **Stdlib.compare u u'** .

*val hash* : **t -&gt; int**

**hash u** associates a non-negative integer to **u** .

## [UTF codecs tools](#UTF_codecs_tools)

*type utf\_decode*

The type for UTF decode results. Values of this type represent the result of a Unicode Transformation Format decoding attempt.

*val utf\_decode\_is\_valid* : **utf\_decode -&gt; bool**

**utf\_decode\_is\_valid d** is **true** if and only if **d** holds a valid decode.

*val utf\_decode\_uchar* : **utf\_decode -&gt; t**

**utf\_decode\_uchar d** is the Unicode character decoded by **d** if **utf\_decode\_is\_valid d** is **true** and **Uchar.rep** otherwise.

*val utf\_decode\_length* : **utf\_decode -&gt; int**

**utf\_decode\_length d** is the number of elements from the source that were consumed by the decode **d** . This is always strictly positive and smaller or equal to **4** . The kind of source elements depends on the actual decoder; for the decoders of the standard library this function always returns a length in bytes.

*val utf\_decode* : **int -&gt; t -&gt; utf\_decode**

**utf\_decode n u** is a valid UTF decode for **u** that consumed **n** elements from the source for decoding. **n** must be positive and smaller or equal to **4** (this is not checked by the module).

*val utf\_decode\_invalid* : **int -&gt; utf\_decode**

**utf\_decode\_invalid n** is an invalid UTF decode that consumed **n** elements from the source to error. **n** must be positive and smaller or equal to **4** (this is not checked by the module). The resulting decode has **Uchar.rep** as the decoded Unicode character.

*val utf\_8\_byte\_length* : **t -&gt; int**

**utf\_8\_byte\_length u** is the number of bytes needed to encode **u** in UTF-8.

*val utf\_16\_byte\_length* : **t -&gt; int**

**utf\_16\_byte\_length u** is the number of bytes needed to encode **u** in UTF-16.

2026-09-15 OCamldoc

---

Document: Uchar(3o) from ocaml-4 4.14.4-r3 (Chainguard OS)
Source: https://github.com/ocaml/ocaml
