Windows 中文 GBK 编码,这 TM 烦死我了!

2015-11-09 15:35:55 +08:00
 master13

大家好,我就是前两天被炒鱿鱼的那个傻吊

你们知道想在一个社区混个脸熟有多麻烦吗?

中文简体 Windows 系统竟然是 GBK 编码的

就说#coding=utf8,去读中文路径,你就比如os.walk(r'd:\python\暴走大事件')硬编码在代码里根本读不到任何东西,就因为代码里“暴走大事件”用 utf8 来看待,系统路径用 gbk 存的。想解决这个问题:

难道就没有别的办法吗?

6375 次点击
所在节点    Python
34 条回复
9hills
2015-11-09 16:51:19 +08:00
@lilydjwg 呵呵,好像谁不知道是的

我指点 lz 去搜索 unicode string 就是让他去走正确的路,搜 raw string 你是想让他进坑么?
lilydjwg
2015-11-09 16:54:54 +08:00
@9hills 你不让他用 raw string 写 Windows 路径不是让他掉进另一个坑么?还是你根本不知道 raw string 是干嘛的?我那是让你搜,没让他搜。
9hills
2015-11-09 16:55:36 +08:00
@lilydjwg

乖乖用 unicode ,用 os.path.join()去拼路径,嘛事都没有。 ur'string'也是教的一手好 python
9hills
2015-11-09 16:56:12 +08:00
@lilydjwg 呵呵,你不会用 os.path.join()去拼接路径么,直接去写 windows 路径那才是巨坑
9hills
2015-11-09 16:58:04 +08:00
明明 Python 给了不能算是非常好但是还不错的跨平台解决办法,就要用一些平台独占的 tips 。。还沾沾自喜,这种写法迟早掉大坑。
xiaosha009
2015-11-09 18:46:47 +08:00
系统说:“怪我咯~”
zkd8907
2015-11-09 18:55:05 +08:00
Windows :这锅我不背
flynaj
2015-11-09 21:29:16 +08:00
还得注意 windows 10 有所变化,
fangdingjun
2015-11-09 21:50:30 +08:00
windows 下文件名写成这样的也可以 d:/path/file/aaa.txt,
用中文要用 unicode, u 前缀,这样
os.walk(u'd:/python/暴走大事件')

os.walk 调用的是 os.listdir ,
os.listdir 传 unicode, 返回的也是 unicode, 传 gbk ,返回的也是 gbk

我也是踩了好多坑才明白的
shenghe
2015-11-10 08:44:48 +08:00
python 的编码支持确实是大坑。 python 的编码和包管理机制,都是设计之初就有问题的玩意
urmyfaith
2015-11-10 09:44:11 +08:00
咱能不能不用中文做文件名?

+10086
esile
2015-11-10 09:57:07 +08:00
py2 妥妥的可以玩
fy
2015-11-10 22:28:39 +08:00
编码的坑主要还是建议直接 py3 走起
dofine
2015-11-14 00:51:28 +08:00
公司内部还在用 Python 2.6 的飘过~
中文的坑全部都用 #coding=gbk 了。。
慢慢竟然也看习惯了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/234805

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX