# ol.llx.ai.impl.utils.unicode

=== 

=== 

## sanitize-surrogates

=== 

```clojure
(sanitize-surrogates text)
```

Removes unpaired UTF-16 surrogate code units from `text`.

Preserves valid surrogate pairs (for example, emoji) and removes
standalone high/low surrogates that can break JSON serialization.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/utils/unicode.clj#L5-L36)

=== 

```clojure
(sanitize-surrogates text)
```

Removes unpaired UTF-16 surrogate code units from `text`.

Preserves valid surrogate pairs and removes standalone high/low surrogates.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/utils/unicode.cljs#L13-L38)

---

## sanitize-payload

=== 

```clojure
(sanitize-payload data)
```

Recursively walks a data structure, applying `sanitize-surrogates` to all strings.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/utils/unicode.clj#L38-L41)

=== 

```clojure
(sanitize-payload data)
```

Recursively walks a data structure, applying `sanitize-surrogates` to all strings.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/utils/unicode.cljs#L40-L43)

---

## truncate

=== 

```clojure
(truncate s max-len)
```

Returns `s` truncated to at most `max-len` characters.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/utils/unicode.clj#L43-L49)

=== 

```clojure
(truncate s max-len)
```

Returns `s` truncated to at most `max-len` characters.

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/utils/unicode.cljs#L45-L51)
