V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
saximi
V2EX  ›  Python

爬虫爬出的结果输出到 csv 文件中,打开发现汉字显示为乱码,如何解决?

  •  
  •   saximi · 2017-09-07 22:40:21 +08:00 · 9863 次点击
    这是一个创建于 2666 天前的主题,其中的信息可能已经有所发展或是发生改变。

    32 位 WINDOWS7,PYTHON3 环境下。用这样的命令将爬到的结果输出到 CSV 文件: scrapy crawl 爬虫名 -o result.csv

    这个文件用 EDITPLUS 或写字板打开都能正常显示其中的汉字,但是直接双击 CSV 文件用 EXCEL 打开时其中的汉字却都是乱码,请问这个要如何解决呢?感谢指点!

    24 条回复    2017-09-11 14:58:13 +08:00
    blindpirate
        1
    blindpirate  
       2017-09-07 22:49:08 +08:00 via iPhone
    Bom
    gooin
        2
    gooin  
       2017-09-07 22:50:37 +08:00 via Android
    编码格式改为 utf-8?
    ho121
        3
    ho121  
       2017-09-07 22:54:17 +08:00 via Android
    utf8-bom
    expkzb
        4
    expkzb  
       2017-09-07 23:09:45 +08:00
    文件转 gbk 编码就好了应该
    saximi
        5
    saximi  
    OP
       2017-09-07 23:50:48 +08:00
    @ho121 # -*- coding: utf8-bom -*- ? 这么写不对呢
    saximi
        6
    saximi  
    OP
       2017-09-07 23:51:14 +08:00
    @expkzb 命令行模式用什么参数可以转 GBK 呢?
    imn1
        7
    imn1  
       2017-09-07 23:52:58 +08:00
    excel 用导入,高级,然后选 utf-8
    dd99iii
        8
    dd99iii  
       2017-09-07 23:58:33 +08:00
    utf-8-sig
    togodo
        9
    togodo  
       2017-09-08 00:02:16 +08:00
    文件格式选系统默认
    saximi
        10
    saximi  
    OP
       2017-09-08 00:12:35 +08:00
    @imn1 EXCEL 导入时手工处理是可以的
    saximi
        11
    saximi  
    OP
       2017-09-08 00:12:58 +08:00
    @togodo 这个是在哪里选呢? EXCEL 导入时么?那就是 UTF-8 了
    rabbbit
        12
    rabbbit  
       2017-09-08 00:16:26 +08:00
    用记事本打开,另存为 utf-8 格式
    thundernet8
        13
    thundernet8  
       2017-09-08 00:36:02 +08:00 via iPhone
    excel 打开 csv 默认 ansi 编码 所以你只能通过 excel 重新导入逗号分隔文本 然后生成 xls
    wisefree
        14
    wisefree  
       2017-09-08 00:51:50 +08:00
    这是 excel 的问题,百度:excel 导入 csv 文件
    togodo
        15
    togodo  
       2017-09-08 07:01:57 +08:00
    @saximi 我不懂 py,我用 c#写的爬虫方式是本地写入文件时候,需要和操作系统的文件格式一致
    KgM4gLtF0shViDH3
        16
    KgM4gLtF0shViDH3  
       2017-09-08 09:13:43 +08:00
    用 Python2 爬 HTML 页面或者爬到数据库然后导出到 csv 还没遇到过这种问题呢。我都是先 sys.setdefaultencoding('utf-8')
    kaiser1992
        17
    kaiser1992  
       2017-09-08 11:22:51 +08:00
    微软的软件打开文件默认都是 ANSI 编码(国内就是 GBK),UTF-8 的 csv 文件在 execl 中打开时解码自然就乱码了,在 WINDOWS 中识别 UTF-8 需要在前面添加 BOM(16 进制的:EF BB BF ),或者选择导入的方式(里面可以选择编码)。
    davidqw
        18
    davidqw  
       2017-09-08 14:23:47 +08:00
    excel 新建表单导入 csv,编码选择 UTF-8,直接双击不行
    runningman
        19
    runningman  
       2017-09-08 15:03:42 +08:00
    utf-8 without boom
    saximi
        20
    saximi  
    OP
       2017-09-08 21:40:47 +08:00
    @dd99iii # -*- coding: utf-8-sig -*- ? 程序中这么写无效呢
    saximi
        21
    saximi  
    OP
       2017-09-08 21:41:35 +08:00
    @bestkayle PYTHON3 下好像就不能用 sys.setdefaultencoding('utf-8')了
    expkzb
        22
    expkzb  
       2017-09-09 10:10:33 +08:00
    @saximi iconv -f utf-8 -t gbk yourfile > your_gbk_file
    Heron
        23
    Heron  
       2017-09-11 00:27:05 +08:00
    貌似简单的方法就是记事本打开以后,在另存成 utf-8 就可以。
    goofool
        24
    goofool  
       2017-09-11 14:58:13 +08:00
    excel 会根据有没有 BOM 确定文件是不是 UTF8 编码,否则它假设内容使用 windows codepage 编码。
    这种情况只需要重新保存文本为 utf-8 with bom 就没有乱码了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4601 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 04:03 · PVG 12:03 · LAX 20:03 · JFK 23:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.