最近在用lua, 发现一个有点意思的槽点啊-____-! 那就是lua貌似会使用系统所用的字符集.
具体点说, 就是在windows上, 它会使用cp936来表示代码中的中文.
来个例子:
print("中文")
把这句代码写到文本文件里, 保存的时候选择UTF-8的话, 这时你运行代码, 是会得到下面的中文乱码的:
涓枃
但如果你把代码存为ANSI格式, 那么就能得到正确的"中文"了.
所以在使用lua时, 如果代码中含有中文的话, 请留意一下使用的环境.
ps:
为了验证我的想法, 特意在cygwin环境下试了下. 我把环境设置为
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ8AAAA0CAIAAAAbhyqzAAADsElEQVR4nO2cz2rbMBzH9VQ+5EV21Smv0EfwNYe9RDE7DZJDKYPC2KHgS0lLF2hKS0LTdK3WcyA72JF/+mNbZLJlx98POtiWpfgn62NLFi0TAAA3WOgLAKA3wBYAXIEtALgCWwBwRbFlvlwhISHRZLdlvlztAQAqVBhGVWnyJQZAL6HCwBYAqoAtALgCWwBwBbYA4ApsAcAV2AKAK0fZksZRFKf/+cteKvFNGkfsAE86epEgFLClII0jVlxSwhnjse+L9Bt199rwtIEtBZYL8n6RsKXPeLKlGMHwJD+UcKYcKva1QU5RNvCdt/S8NI6iOOa1gXAeMcY417LU03lyCNUaOKknIb+vNI1SRK0NNI8XW9I4yu/wYas4IkTCtfuZFc8rIXWFflLabZGd1/qMyDtt2UvJaIdEVmIEbqkn4VnpvBpbEajSIj5sobsVd5HOoOU59GDo52TZuyXVtq2ByHPKsioqyc5OzEbLTzJeLBVFQIO0Zgt5w9Bz6MM3NDXzlny7JBAhSmO0VmgGXv6iSLgcx7kWAU3Q2kjsMKiQB8yxSmhzar6JFbZYAxHCzKoZiamB22eD0i310VJWBDTJsbbQEUE2otZHUvosXymkd7Lww7CMqvWWw3Z5IEaWEEY7ZLva9wI5y7e829Sm0dqK1gYaB2v5ALgCWwBwBbYA4ApsAcCVY2yZpQ9n59dfvv7odTo7v56lDzSu27v7i8ur5Nt3pMGmi8ur27t7n7b8/P3nZv3Z0L/VaI2b9eds/krjenp+3byJ0NcFQrJ5E4vl2rMtoYPyg2lL6CsC4YEtdmALMIEtdmALMGnWlsVkJNevx9MwER5HpS3TsRJNvjsdM53xVGkCxkaTBf0VmakdB92kQVsWkxHpBdNxr4Q5whb77mIyKlNhMRnlZ07H8KUPNGdLRTfpAS3ZcsjSqgDdpDFb+i1LK7YUeZClHwzUFmOGwRhj9ASftijzGJU8t8MtNSRqe8VAbdkbTaPlNvduyT8GZB8A8qzON9ZgqO4Vg563lDXKvsYWNTQ9UNeRGM3pQWMNhopeMfRvYtZG2dettyhC6JMO53lL8SWs+DoGukBZr8B6i5261UkSmS6D+yyfLNH0q3WGCtby7WAtH5jAFjuwBZjAFjuwBZjAFjuwBZjAFjuwBZj4twV/OwlOEv9/O/n48vHr6e8JpMeXDxrXdvv+vPlAGnjabt992gLAMIEtALhisWW328lDAADJfLna7XbZNpNHM2GQkJBokqoIIf4B81Wnh7Z+bh8AAAAASUVORK5CYII=" alt="" />
此时, 如果运行代码格式为UTF-8的lua代码, 则可以正确输出中文, 如果保存为ANSI格式的话, 则会输出乱码.
不过具体导致这个结果的原因, 可能就需要去瞅下lua的代码了.