Difference between revisions of "utf8"

(Init utf8 module page)
 
m
 
(11 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
{{newin|[[0.9.2]]|092|type=module}}
 
{{newin|[[0.9.2]]|092|type=module}}
  
This library provides basic support for UTF-8 encoding. It provides all its functions inside the table utf8. This library does not provide any support for Unicode other than the handling of the encoding. Any operation that needs the meaning of a character, such as character classification, is outside its scope.
+
This library provides basic support for handling UTF-8 encoded strings.  
  
You need to require the module like this:
+
It provides all its functions inside the table returned by <code>require("utf8")</code>. 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 [https://www.lua.org/manual/5.3/manual.html#6.5 reference manual].
 +
 
 +
{{notice|The utf8.char function does not work correctly in [[0.9.2]]; However, it is not an issue since [[0.10.0]]}}
 +
 
 +
 
 +
== Examples ==
 +
Print text the user writes, and erase it using the UTF-8 module.
 
<source lang="lua">
 
<source lang="lua">
 
local utf8 = require("utf8")
 
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
 
</source>
 
</source>
  
== Reference Manual ==
+
== See Also ==
For detailed usage, see the [http://www.lua.org/manual/5.3/manual.html#6.5 reference manual].
+
* [[parent::love]]
 +
* [[love.textinput]]
  
 
[[Category:Libraries]]
 
[[Category:Libraries]]
{{#set:Description=Provides basic support for UTF-8 encoding.}}
+
[[Category:ThirdParty]]
 +
{{#set:Description=Provides basic support for manipulating UTF-8 strings.}}
 
{{#set:LOVE Version=0.9.2}}
 
{{#set:LOVE Version=0.9.2}}
 +
{{#set:Keyword=String}}
 
== Other Languages ==
 
== Other Languages ==
 
{{i18n|utf8}}
 
{{i18n|utf8}}

Latest revision as of 03:04, 5 July 2023

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.

O.png The utf8.char function does not work correctly in 0.9.2; However, it is not an issue since 0.10.0  



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


Other Languages