如何在UTF-8模式下读取文件

如何在UTF-8模式下读取文件,utf-8,lua,Utf 8,Lua,我有点麻烦。我以前从未和LUA一起工作过 我有一个包含以下内容的简单文件: «Counting Stars» ― OneRepublic 因此,我编写了读取此文件的下一个代码: BotSite = "" local open = io.open local function read_file(path) local file = open(path, "r") if not file then return nil end local content = fil

我有点麻烦。我以前从未和LUA一起工作过

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

«Counting Stars» ― OneRepublic
因此,我编写了读取此文件的下一个代码:

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, «Counting Stars» â OneRepublic
我完全理解UTF-8的问题。如何修复它


所以我得到了答案:

官方未经修改的Lua库在上不支持UTF-8 窗户。大多数SDK和游戏引擎(如Corona)修改 在Windows上添加UTF-8支持的本机Lua库代码。 (从技术上讲,问题在于Lua调用Win32 char*API 仅支持ANSI文本编码,不支持UTF-8,并且必须进行转码 Lua中的UTF-8字符串转换为UTF-16并调用Win32的wchar*API 相反。)


什么操作系统?您的终端可能未设置为UTF-8。我使用Windows 10。此代码在其他程序中执行。这是twitch的机器人。这个程序支持“lua script files”上校三十二,我只是用二进制模式打开executingOpen的脚本文件,如果我用二进制模式打开它,这个问题是一样的。还有一个问题:它的文件不能被重写。抱歉,其他应用程序使用了您的文件