Mac下CSV中文乱码问题解决方法

本文介绍了一个有效的方法来解决从豆瓣爬取的TOP250电影数据导出为CSV文件后出现乱码的问题。通过使用Mac自带的Automator结合Shell脚本,实现了批量转换文件编码格式的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天周日,忽然想看电影,于是用scrapy爬了豆瓣的top250电影,结果存为csv,结果打开发现乱码了。
top
网上找了一圈,发现一个一劳永逸的方法

1)首先打开Mac下自带的“Automator”。如下图所示:

Automator

2)点击左下角的“新建文稿”按钮并选择服务类型

新建

3)创建Shell脚本

1 在左上角的输入框中输入“Shell”,看到“运行Shell脚本”这一项
2 将“运行Shell脚本”这一项用鼠标拖拽到右边的空白区域,松开鼠标就能看到如下图所示的界面
3 “服务”收到选定的,这一项选择“文稿”
4 位于,这一项选择“Finder.app”
5 Shell,这一项选择“/bin/bash”
6 传递输入,这一项选择“作为自变量”
7 文本框中输入如下代码:

for f in "$@"; do
if [ -f "$f" ]; then
    iconv -s -c -f UTF8 -t GBK "$f" > /tmp/iconv.utf8.gbk.tmp
    mv /tmp/iconv.utf8.gbk.tmp "$f"
fi
done

code

4) 保存并查看效果

保存的时候去一个名字 像 csv转码

csv

这里写图片描述
完美~

### Mac 上打开 CSV 文件时中文乱码解决方案 在开发环境中生成的 CSV 文件如果包含中文字符,在传输至 macOS 平台后可能会遇到乱码问题。这通常是由编码不一致引起的,具体表现为开发环境中的 UTF-8 编码与 macOS 或 Excel 的 GBK/GB2312 编码之间的差异。 #### 问题分析 当在开发机上生成 CSV 文件时,默认使用的可能是 UTF-8 编码[^1]。然而,macOS 下的某些应用程序(尤其是 Microsoft Excel),对于中文字符更倾向于使用 GBK 或 GB2312 编码来解析文件[^2]。这种编码不匹配会直接导致乱码现象的发生。 #### 解决方案 以下是几种常见的解决方法: 1. **调整保存时的编码格式** 在生成 CSV 文件的过程中,可以指定文件的编码方式为 `utf-8-sig`。这种方式会在文件头部添加 BOM (Byte Order Mark),帮助部分程序识别文件的实际编码格式。 ```python import csv with open('output.csv', 'w', newline='', encoding='utf-8-sig') as csvfile: writer = csv.writer(csvfile) writer.writerow(['列名1', '列名2']) writer.writerow(['测试数据1', '测试数据2']) ``` 此种方法适用于 Python 开发场景下的 CSV 文件生成过程[^3]。 2. **手动转换文件编码** 如果已经生成了一个带有乱码CSV 文件,则可以通过命令行工具将其重新编码为适合的目标格式。例如,利用 `iconv` 工具完成编码转换操作: ```bash iconv -f utf-8 -t gb18030 input.csv -o output.csv ``` 这里 `-f` 参数指定了原始文件的编码格式 (`utf-8`),而 `-t` 则定义了目标编码格式 (`gb18030`)。通过此步骤可有效修复已存在的乱码问题。 3. **修改应用设置** 对于特定的应用软件来说,也可以尝试更改其内部选项以支持不同的编码标准。比如在 Numbers 应用中导入 CSV 数据前先确认选择了正确的文本编码;或者是在 Excel 中加载外部数据源时明确指出所采用的具体编码形式。 综上所述,无论是预防还是事后补救措施都围绕着统一整个工作流内的文字编码展开讨论并提供了解决策略。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值