一个编码问题。。。

2018-12-20 00:05:41 +08:00
 king1101
import csv

with open("demo.csv","w",encoding= "utf-8") as f:
	w = csv.writer(f)
	w.writerow(u'\u22ef')

结果写进 csv 的是乱码,采用 gb18030 编码写进 csv 的是"??",如果不添加 encoding 就会报 gbk 错误

如果单纯只是print(u'\u22ef'),结果是“……”,请问如何才能将省略号写入 csv。

谢谢!

2399 次点击
所在节点    Python
7 条回复
wevsty
2018-12-20 00:30:31 +08:00
代码里面 encoding 不是 utf-8 么?和 gb18030 的关系是?
你用个能用 UTF-8 编码打开文件的文本编辑器应该就正常了。
guog
2018-12-20 01:03:27 +08:00
换 Python3 试试?
Vegetable
2018-12-20 01:10:32 +08:00
@guog open 有 encoding 参数就是 py3 了
Sylv
2018-12-20 02:38:47 +08:00
UTF-8 编码的 csv 文件需要加 BOM 头,Excel 才能正确识别:

import csv
import codecs

with open("demo.csv","wb") as f:
-> f.write(codecs.BOM_UTF8)

with open("demo.csv","a",encoding="utf-8") as f:
-> w = csv.writer(f)
-> w.writerow(u'\u22ef')
Trim21
2018-12-20 05:08:03 +08:00
如果乱码是指用 excel 打开看到话应该是楼上说的原因.
或者用 excel 的导入功能, 可以正常打开 utf8 格式的 csv
king1101
2018-12-20 08:50:44 +08:00
@guog 一直使用的都是 py3,对于 py2 了解有限,不过你楼下已经给出了解答,还是谢谢
king1101
2018-12-20 08:52:43 +08:00
@Sylv 感谢,已测可行

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

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

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

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

© 2021 V2EX