# utf8

Available since LÖVE 0.9.2
This module is not supported in earlier versions.

This library provides basic support for handling UTF-8 encoded strings.

It provides all its functions inside the table returned by `require("utf8")`. This library does not provide any support for Unicode other than handling UTF-8 encoding. Any operation that needs the meaning of a character, such as character classification, is outside its scope.

For detailed usage, see the reference manual.

| utf8.char does not work correctly in 0.9.2 |

## Examples

Print text the user writes, and erase it using the UTF-8 module.

    local utf8 = require("utf8")

    function love.load()
        text = "Type away! -- "

        -- enable key repeat so backspace can be held down to trigger love.keypressed multiple times.
        love.keyboard.setKeyRepeat(true)
    end

    function love.textinput(t)
        text = text .. t
    end

    function love.keypressed(key)
        if key == "backspace" then
            -- get the byte offset to the last UTF-8 character in the string.
            local byteoffset = utf8.offset(text, -1)

            if byteoffset then
                -- remove the last UTF-8 character.
                -- string.sub operates on bytes rather than UTF-8 characters, so we couldn't do string.sub(text, 1, -2).
                text = string.sub(text, 1, byteoffset - 1)
            end
        end
    end

    function love.draw()
        love.graphics.printf(text, 0, 0, love.graphics.getWidth())
    end

## See Also

- love
- love.textinput

##

Category:

- Libraries