Closed OpportunityLiu closed 5 years ago
我在这里搞了个例子,应该属于比较极端的情况了 https://github.com/OpportunityLiu/xmake/tree/utf8/%E7%A8%8B%E5%BA%8F
xmake.lua里面路径传入硬编码中文,原本就是不支持的,一般很少有项目这么搞,也不建议这么写,所以我一直懒得去支持这种情况。。
对于`add_files("*.c")去匹配中文路径,之前处理过,应该是能够处理匹配中文路径的
而对于中文路径在mingw/gcc的报错中显示乱码,应该跟终端显示的编码设置有关,目前我这边两个系统下测试了,默认都是显示正常,我重新又装了个cygwin/mingw-gcc测试了下,也ok,这边暂时没有复现这个情况。可以尝试切换下终端显示的默认编码设置试试。
我知道chcp65001可以用。。。
这是一个Feature request,不是bug report
顺便,上面 那个测试,在linux一点问题都没有
Win10也可以通过这个解决问题(不过其他程序有可能炸就是了)
Win10也可以通过这个解决问题(不过其他程序有可能炸就是了)
对于终端中文输出乱码,尝试单独只改 终端设置里面的 显示编码呢?
而lua脚本里面硬编码中文的支持,个人感觉必要性不是很大,虽然这块支持上的话,也是锦上添花,如果改动量不大的话,加上支持 也可以。
这块我提个PR试试吧,感觉还是挺好的
中文一般不会有人这么搞,但是西欧语言的话很多开发者喜欢用带音调的字母
看Unicode测试的ci输出
重定向到文件的时候应该转成getconsoleoutputcp再写,而不能直写utf8
xmake现在读文件会探测编码了没关系,但是其他程序并不会。。 比如vs和PowerShell
使用 FastHub 从我的 ONEPLUS A6010 发送
重定向到文件的时候应该转成getconsoleoutputcp再写,而不能直写utf8
重定向的编码这块是还没处理呢,原本就打算之后再完善的,那正常编译出错现在显示还乱码么?还是你之前说的错误乱码就是重定向后导致的问题?
你这是因为在vscode下,给捕获了重定向后编译错误,然后里面显示乱码了吗?
对啊,你看ci里测试输出也全是乱码
我现在只要确认正常终端下编译输出,非重定向下无乱码就行了
ci的重定向乱码我之前就看到了,原本就打算后面抽空再完善的,所以之前暂时没去管它。
其实更优的方案是写bom再直写UTF8,这样可以避免一些文字当前console output cp表示不了变成问号,但是也有问题,就是如何确认你拿到的流不是二手的(比如>>重定向,比如你是子进程)或者stdout和stderr合并重定向到一个文件。这些没法探测就会在文件中间插入bom
插入bom暂时不考虑了 >> 这种肯定处理不了
我加上console output cp的处理了。。你本地再试试,ci上显示效果至少跟你这边之前的效果一样了,虽然没乱码,但都显示?了。。想要进一步完善,除了插bom以外,如果没啥好的解决办法,只能先这样了。。
应该可以了
那这里我先close了,等回头有其他问题或者改进点,可以再开issues。。
生成 vs 工程似乎单纯 utf8 编码还不行,必须要带 bom 的 utf8 。。https://github.com/xmake-io/xmake/issues/1689
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Define
UNICODE
in xmake core, use*W
_w*
api, regard allchar*
as utf-8