V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Arthur2e5  ›  全部回复第 4 页 / 共 12 页
回复总数  221
1  2  3  4  5  6  7  8  9  10 ... 12  
2016-11-23 01:09:29 +08:00
回复了 SP00F 创建的主题 Python Supervisor 执行时报 UnicodeError
Python2 的 print 对于字符串( unicode )类型需要在内部按照 Python 感知到自己应该使用的 IO 编码方式编码,才能输出到缓冲区之类的东西。如果 Python 的感觉不对,那你就该用 PYTHONIOENCODING=UTF-8 这种东西掰对。

@glasslion 一个语言本来打印语句可以直接打印字符串的,结果却要变成字节流打印,难道不是执行环境的 bug 吗?更别说:

* 依赖环境变量?直接假定输出代码页是 UTF-8 岂不是更糟?能编码中文、运行 Python 的终端窗口用的编码又不止 UTF-8 。
* 字节串 print 这件事情基本上是 Python2 没想好 Unicode 字符串和字节串区别的时候留下的黑历史, Py3 去试试 print(b'\x2e') 就知道了。
2016-11-16 02:23:47 +08:00
回复了 vugusurk 创建的主题 程序员 现在还有哪个代码编辑器是支持 Windows XP 的?
virtualbox.msi
2016-11-16 02:21:09 +08:00
回复了 domino 创建的主题 Python Python3 编码问题
@domino chcp 65001 *就是* 你在找的通用方法,句号。

@mahone3297 人生苦短,多手动用 u"你好中文"(当然用 __future__ unicode_literals 也是好事。)
2016-11-15 02:40:41 +08:00
回复了 domino 创建的主题 Python Python3 编码问题
Windows 控制台默认使用目前系统编码,对于繁体中文是 Big5/cp950 。 Python 在 print 一个字符串之前,需要编码到目前 cmd 窗口使用的编码,而你遇到了个( Python 印象中的) Big5 没有的字符。(之所以强调可能是 Python 的错觉,是因为这个语言的官方实现对于编解码的实现经常拘泥“标准”到脱离现实的地步: cp936 直接指到 gbk 结果没有该有的欧元符号、 cp950 没有 HKSCS 支持……)

你可以使用 chcp 65001 切到 utf-8 控制台窗口,当然也可以像楼上建议的一样走路绕开 Windows 控制台。
@jimzhong 搞 apt 中文翻译的是中国人(应该是废话吧?),如果需要提意见( jì dāo piàn )的话可以上:
1. Debian bug report
2. Ubuntu bug report
3. i18n-zh Google Group
2016-11-06 08:01:45 +08:00
回复了 cilbup 创建的主题 iDev 求推荐类似 C-Free 的 C/C++编程开发工具
诸位,首先要解决的问题不是在题主不会在一个处理多文件工程的 IDE 里面创建多个文件吗…?
@dlllcs mkhtmltopdf 有个坑点(不过主要是对于发行版打包者来说的):迟迟不迁移到 QWebEngine ,内置的老版本 QWebView (WebKit) 还带魔改…
2016-11-03 22:04:27 +08:00
回复了 BBrother 创建的主题 JavaScript 怎么用 python 模拟 js 里 JSEncrypt 模块的加密方式?
https://github.com/travist/jsencrypt

直接调 openssl 啊……
2016-10-25 01:47:59 +08:00
回复了 771456556 创建的主题 Python BeautifulSoup 怎样才可以 find_all 再次 find_all 结果
改写一下 @b1eberg0n ,来个范围攻击的……

a_b = [a.findall('b') for a in soup.findall('a')]
a_b_flat = [result for a in soup.findall('a') for result in a.findall('b')]
2016-10-19 01:00:39 +08:00
回复了 honglin1983 创建的主题 程序员 求一个好的团队 wiki 管理工具
@Mithrandir MediaWiki 没有模板功能直接就没有灵魂了差不多…… GitHub 那个 好像是 Ruby 写的 wiki 系统也是支持那么多,也是各种只有层皮。

MDN 那个 Kuma 相比之下没有语法兼容却有类似功能( KumaScript )。

(说回来这么强调用模板大概也是在 MediaWiki 下被折腾多了出来的……)
https://stackoverflow.com/questions/16121001 ,直接插空格。
当然想模仿一下 br 处理的话还得再费点事。 strip 那玩意本来就是拿来吃空格的,别指望它……
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')实现。
2016-10-12 23:35:11 +08:00
回复了 crazykuma 创建的主题 Python 公司都在用 py2.7,同事非要用 py3.6,怎么破
2 的某些痛点可以 __future__ 和和稀泥( 2 的后面几个版本在这个意义上还是能用的,毕竟还能写写 b"" 出个 str ),至于 3 那些在工程上可以帮助减少脑抽概率的语法新增( type annotation )大概只能靠游说和憋着了。说起“后面几个版本”, Py2.6+ 的 io 那套完全就是 Py3 的用词,恶毒一点的话可以故意多用用把人逼上 Py3 。

或者可以造点 RPC 的轮子在 2 和 3 之间传东西……(雾)

* * *

@gouchaoer py 最傻逼的地方是 3 不兼容 2 的傻逼之处。

@loveminds 字符串、 except ……还有就是关于写了 3 为什么还要不用新特性之类的事情。

@prefere 如果经验指的是记得绕着坑走路的话,正常人都愿意直接用坑少的吧……?

@nullizer 不不不,现在是 Python 8 的时代 /

@crazykuma 欸有 native 部分啊……迁移 C API 好像事情列出来倒是比脚本语言那块少: http://python3porting.com/cextensions.html 。 Python 3.x 这方面有个地方好, 3.2 开始有 stable ABI 了。话说和女孩子交流并没什么可以另外表示困难、奇怪的吧。

@AlexZou 不要把人往坑里送……到时候就是“项目图速度快不用转译,可是总有人要用 ES2018[???] 了”。
少了一步 substring ,把第一个字切掉就是……
@codehz 自由字体放 release 不就好了( x
东西不错,加个 1 。(要是把输出文件找个 releases 挂着做个懒人包就更棒了(x))

> 因为 Unicode 中的好多特性都不能实现

叫做 UCS 就好了(小声)

> 还有好多游戏中文显示不了的

嘛,字太多,没必要特地去设计放进去……
语言设定里面有个 Force Unicode Font 的设定会把你全都搞进系统字体(以及你设置的这个字体?),大概也有点信任系统没眼瞎的意思吧。(笑
话说这个字体材质的话有加粗这回事吗?我看别人 Linux 上跑的 Minecraft 截图,遇到加粗字体文泉驿会有描边……

> 想到 ASCII 总共才 256 个字符

不不不和编码完全没关系,真的就是懒的事。你看 minecraft 默认字体显示 naïve 是不是很正常啊。
> 删去 0-9 的, 还算能看

其实没什么好删的,本来也该是这样:
https://en.wikipedia.org/wiki/Power_law
2016-10-05 12:41:55 +08:00
回复了 zhijiansha 创建的主题 Python python 中十六进制如何转中文??
@zhijiansha 换成 python3 立地成佛,或者 python2 去乖乖用 unicode 数据类型。我感觉我说了很多遍了啊。
2016-09-29 13:34:41 +08:00
回复了 zl2003cn 创建的主题 Python 求解汉字编码问题
@Magic347 其实是因为 requests 没有调 encoding 直接取 text ,自动当作 ISO-8859-1 回落解码了:

>>> import requests
>>> resp = requests.get("http://jobs.51job.com/shenzhen-baq/81498324.html?s=0" )
>>> resp.encoding
'ISO-8859-1'

这时候取内容会逐 byte 处理,按照你提到的 U+00 ~ U+FF 和 latin1 一一对应的方式处理得到了一个 *错误的* resp.text 字符串:

<class 'str'>

接下来你直接把这锅浆糊送进 lxml 是在碰运气作死。之所以说碰运气,是因为 GBK 第二范围有 [40, 7F) ∪ [80, FF), 直接按照字节处理的话前半在 ASCII 内有对应的部分搞不好会和别的东西撞。比如说 CDATA 用 ]]> 结尾,而“昡”这个字又是编码成 b'\x95\x50',原文出现“昡]>”的时候就会错误认定 CDATA 结束。这是一个安全问题。

要正确解决的话很简单,就是先把 resp.encoding 设置成正确的编码名,这样取 resp.text 才会按照正确的解码方式得到正确的字符串。

@mingyun lxml 只是拿来解析得到的数据而已,和你解码文字的过程并无太大关系。
2016-09-27 11:40:05 +08:00
回复了 sola97 创建的主题 Python 如何把一个字典插到数据库里?
(对不起,我把 issue 看错了……啊自己真是的。)
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2979 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 14:21 · PVG 22:21 · LAX 06:21 · JFK 09:21
Developed with CodeLauncher
♥ Do have faith in what you're doing.