我是一个有用的助手,可以为您翻译文本。
我正在为这个非常简单的问题而烦恼。让我们考虑以下两种尝试从lua解释器中打印字符
1)
我感觉自己在某个地方错过了非常愚蠢的东西,但我还没有能够找到它。任何帮助都将不胜感激。
谢谢!
我正在为这个非常简单的问题而烦恼。让我们考虑以下两种尝试从lua解释器中打印字符
└
:1)
Lua 5.3.1 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> print(utf8.char(2514))
2)
Lua 5.3.1 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> print("└")
└
首先问题是,由于某种原因只有选项2)实际上有效。但我的真正问题是,当我运行一个使用选项2)打印一些内容的脚本时,它实际上打印出与选项1)中看到的相同的乱码。
这引出了我的主要问题,为什么?信息:我只是使用以下命令来运行脚本:
./lua53 path_to_my_script.lua
我感觉自己在某个地方错过了非常愚蠢的东西,但我还没有能够找到它。任何帮助都将不胜感激。
谢谢!
Lua 5.3.4版权所有(C)1994-2017 Lua.org,PUC-Rio
> print(utf8.char(0x2514))
Γöö
> print("\u{2514}")
Γöö
- MarkoPauloΓöö
代表'\u{2514}'
,所以显然你也有相同的默认编码。 我可以使用chcp 65001
将代码页更改为UTF-8(代码页65001)(在Lua中使用os.execute
执行此操作),但仅当我在cmd.exe中打开Lua解释器时才能这样做。 如果我单独运行lua.exe,则尝试切换到UTF-8会使非ASCII字符('\128-\255'
)根本不显示。 我没有找到解决此问题的方法。 Windows很烦人。 - cyclaministprint(utf8.char(0x1F6B2))
没问题;print(utf8.char(0xD83D))
不行。0x2516是“└”的单个UTF-16代码单元并不重要。 - Tom Blodgetos.execute("chcp 65001")
,然后是print("\u{2514}")
,它在两种情况下都打印出一行空白。 - MarkoPaulo