util.string.clean

Shared

Replaces invalid UTF-8 byte sequences with a replacement string


Syntax

local result, was_clean = util.string.clean(
    input,
    replacement = "\xEF\xBF\xBD"
)

Parameters

TypeNameDescription
stringinputString to clean
stringreplacementString to substitute in place of each invalid byte sequence - defaults to the Unicode replacement character (U+FFFD)

Returns

TypeNameDescription
stringresultCleaned string - identical to input if it was already valid
boolwas_cleantrue if input was already valid UTF-8 and no replacement occurred

Examples

A valid string passes through unchanged
local result, was_clean = util.string.clean("hello")

core.engine.print("info", result, was_clean) -- 'hello'  true
Replace an invalid byte with the default replacement character
local result, was_clean = util.string.clean("ab\xFFcd")

core.engine.print("info", was_clean) -- false
core.engine.print("info", result) -- 'ab' .. '\xEF\xBF\xBD' .. 'cd'
Use a custom replacement string
local result = util.string.clean("ab\xFFcd", "?")

core.engine.print("info", result) -- 'ab?cd'

On this page