1
veelog 2016-10-06 22:02:11 +08:00 via Android
入参是什么编码就按什么 decode
|
2
billlee 2016-10-06 22:06:02 +08:00
gbk 试试?中文 windows 的 cmd 应该是默认用 gbk 编码
|
3
zungmou OP |
4
imn1 2016-10-06 22:15:17 +08:00
程序能运行,只是输出错误而已,运行程序前先运行“ chcp 65001 ”则可
py3 比 py2 最大优势就在此,能把 win 路径都转为 utf-8 ,其他语言可能还要使用 win 相关模块才能读 |
5
schezukNewTos 2016-10-06 22:20:05 +08:00
@imn1 chcp 不解决问题。
|
6
zungmou OP |
7
imn1 2016-10-06 22:32:40 +08:00
?
win10 变了?我以前 win7 处理韩文路径多了去了,都没问题 win10 我已经转 subsytem/bash ,不再用 win 版的 python 了 或者一种可能是你的 cmd 字体不是 unicode 的,你要找个支持 unicode 的字体 反正显示???而不是报错的话,就说明程序没问题 |
8
billlee 2016-10-06 22:58:47 +08:00
@zungmou GBK 里面似乎是包含谚文字符的
仔细看了你的描述,你应该是把 encode/decode 用反了吧, windows 传进来的参数是 gbk 编码的二进制串,要 decode('gbk') 成 unicode 串,如果这一步没抛异常,应该就已经解码成功了 |
9
veelog 2016-10-07 13:53:35 +08:00
gbk 是无法编码韩文的呀。。
|
10
Arthur2e5 2016-10-13 00:19:01 +08:00
gbk 我记得是没有谚文字符的,全都得用 18030 的 UTF 去做( https://r12a.github.io/apps/encodings/)。要不要默认这一点然后用一下 'gb18030' 去 decode/encode ?(结果变成猜 conhost 怎么处理复制粘贴输入,还有解码 cp936 的时候会不会尝试 cp54936 了……)
print b'\xd0\xc2\xbd\xa8\xce\xc4\xbc\xfe\xbc\xd0\x828\xc71\x833\x9a7\x835\xc47' # gb18030 出来的 另外 Python 的 cp936 实现坑很大(没有欧元字符, Py#28343 ),不过在 Windows 上因为会直接调用系统 MultiByteToUnicode 还是建议一试。要兼容不同语言 Windows 的话可以试试 'mbcs' 这个特殊编码名,直接 MultiByteToUnicode 按照当前编码解析。 慢着,怎么全都是 encode 不是 decode 来着……?一般 print 的话直接把 <type 'unicode'> 的浆糊丢出去让 Py 看着办吧。 * * * @zungmou 开个 65001 当然该解决问题。如果你看到的不是问号字符而是有个框的问号,那就说明是字体问题不是 Python 解码问题了。造个 cmd 快捷方式去注册表折腾折腾换个字体试试吧。 @imn1 py3 不是转 utf-8 ,是转了一个内部可能为 UTF-8/16/32 的 <type 'str'>(也就是 py2 'unicode')实现。 |