V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · Sep 7, 2017 · 10327 views
    This topic created in 3156 days ago, the information mentioned may be changed or developed.

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

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

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