从 Lua 解释器打印 Unicode 字符

Mar*_* L. 4 printing unicode lua character

我对这个非常简单的问题失去了理智。让我们考虑以下 2 次\xe2\x94\x94从 lua 解释器打印字符的尝试:

\n\n

1)

\n\n
Lua 5.3.1  Copyright (C) 1994-2015 Lua.org, PUC-Rio\n> print(utf8.char(2514))\n\xe0\xa7\x92\n
Run Code Online (Sandbox Code Playgroud)\n\n

2)

\n\n
Lua 5.3.1  Copyright (C) 1994-2015 Lua.org, PUC-Rio\n> print("\xe2\x94\x94")\n\xe2\x94\x94\n
Run Code Online (Sandbox Code Playgroud)\n\n

第一个问题是,由于某种原因,只有选项 2) 真正有效。但我真正的问题是,当我运行一个使用选项 2) 进行打印的脚本时,它实际上打印出与选项 1) 中相同的乱码。\n这引出了我的主要问题,为什么?

\n\n

有关信息,我只是使用以下命令运行脚本:

\n\n
./lua53 path_to_my_script.lua\n
Run Code Online (Sandbox Code Playgroud)\n\n

我觉得我在某个地方错过了一些非常愚蠢的东西,但我一直无法弄清楚。任何帮助将不胜感激。

\n\n

谢谢!

\n

lhf*_*lhf 6

2514 是该 Unicode 字符的十六进制代码(请参阅此处)。

使用

print(utf8.char(0x2514))
Run Code Online (Sandbox Code Playgroud)

或者

print("\u{2514}")
Run Code Online (Sandbox Code Playgroud)

  • 我使用 Windows 10,控制台的默认编码是 [codepage 437](https://en.wikipedia.org/wiki/Code_page_437)。我还看到“Гöö”代表“\u{2514}”,所以显然你有相同的默认编码。我可以使用“chcp 65001”将代码页更改为 UTF-8(代码页 65001)(在 Lua 中使用“os.execute”执行此操作),但前提是我在 cmd.exe 中打开了 Lua 解释器。如果我单独运行 lua.exe,尝试切换到 UTF-8 只会使非 ASCII 字符 (`'\128-\255'`) 根本不显示。我还没有找到解决这个问题的方法。Windows 很烦人。 (3认同)