如何以 UTF-8 模式读取文件

我遇到一些问题。我以前从未使用过 LUA 。

我有一个包含如下内容的简单文件:

“唱一千年写给你的歌” - 陈奕迅

所以我写了下面的代码来读取这个文件:

BotSite = ""

local open = io.open

local function read_file(path)
    local file = open(path, "r")
    if not file then return nil end
    local content = file:read "*all"
    file:close()
    return content
end

BotSay = UserFrom .. ", " ..read_file("D:/Snip/Snip.txt")

执行完这段代码之后,我得到了以下结果:

nickname, “唱一千年写给你的歌” - 陈奕迅

我认为这是 UTF-8 的问题。该如何解决呢?


所以我找到了一个有趣的答案:

官方的 未修改 Lua 库在 Windows 上不支持 UTF-8 。大多数 SDK 和游戏引擎(例如 Corona)修改了原生的 Lua 库代码,在 Windows 上添加了 UTF-8 支持。 (技术上的问题是 Lua 调用 Win32 char* APIs,它仅支持 ANSI 文本编码,而不支持 UTF-8 ,您必须将 Lua 中的 UTF-8 字符串转码为 UTF-16 并调用 Win32 的 wchar* APIs)

点赞