utf8 (简体中文)

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


这个库提供了对于UTF-8字符串处理的基本支持。

所有提供的函数都在 require("utf8")返回表中。这个库不提供除了处理UTF-8编码之外对Unicode的任何支持。任何需要字符含义的操作,比如字符分类,都不在其范围内。

详细的用法见参考手册.

O.png 函数utf8.char在0.9.2中不能正确工作;然而从0.10.0版本开始这不再是问题  



示例

打印用户输入的文本,并使用UTF-8模块擦除它。需要注意的是译者的输入法无法被唤起从而无法输入中文,但是擦除功能对于中文是也正常工作的。

local utf8 = require("utf8")
-- 加载字体,显而易见的是,默认字体中并不包含中文字形
-- 此处假设你的字体文件已经在这个位置了
local font = love.graphics.newFont("asserts/fonts/MSYH.TTF")

function love.load()
    text = "随便打字吧! -- "

    -- 允许键盘重复,这样你就可以一直按住退格一直删除字符
    love.keyboard.setKeyRepeat(true)
end

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

function love.keypressed(key)
    if key == "backspace" then
        -- 获得字符串里最后一个UTF-8字符的字节偏移量
        local byteoffset = utf8.offset(text, -1)

        if byteoffset then
            -- 从字符串中移除最后一个 UTF-8 字符
            -- string.sub 对字节进行操作,而非UTF-8字符,所以不能使用 string.sub(text, 1, -2).
            text = string.sub(text, 1, byteoffset - 1)
        end
    end
end

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

参见


其它语言