Azure Databricks含特殊字符及多语言数据导出CSV乱码问题咨询
解决Azure Databricks导出CSV乱码问题
哈哈,这个乱码问题我太熟了!之前帮同事解决过一模一样的场景——Databricks里SQL查询显示正常,一导出CSV到本地就变乱码,核心就是编码格式没对齐:Databricks默认导出可能用了非UTF-8的编码(比如ISO-8859-1),而你的多语言内容和特殊字符(像Don’t里的撇号)必须用UTF-8才能正确保存。
给你几个靠谱的解决办法,按优先级来:
1. 用Databricks UI导出时指定UTF-8编码
如果习惯用UI操作,在导出数据的时候:
- 点击查询结果右上角的「Export」按钮
- 在弹出的选项里,找到「Encoding」(有些版本可能藏在高级设置里),选择「UTF-8」
- 确认导出后下载到本地,这样得到的CSV就不会乱码了
2. 用PySpark代码导出(更可控,适合批量场景)
如果UI导出找不到编码选项,或者需要自动化导出,用代码更可靠。直接在Databricks Notebook里运行这段PySpark代码:
# 先执行SQL查询获取数据 df = spark.sql("SELECT * FROM table1") # 导出为UTF-8编码的CSV,同时处理特殊字符转义 df.write.format("csv") \ .option("encoding", "UTF-8") \ .option("quote", "\"") \ # 用双引号包裹含特殊字符的字段 .option("escape", "\"") \ # 转义字段内的双引号 .option("header", "true") \ # 可选:导出表头 .mode("overwrite") \ # 覆盖已有文件 .save("/dbfs/FileStore/temp/table1_export.csv")
执行完后,去Databricks的「Data」->「DBFS」里找到/FileStore/temp/table1_export.csv,点击下载到本地即可。
3. 本地打开CSV的正确姿势
就算导出是UTF-8,用Excel直接双击打开可能还是乱码(因为Excel默认用系统编码,比如Windows的GBK)。这时候换个方式导入:
- 打开Excel,点击「数据」->「自文本/CSV」
- 选择下载好的CSV文件,在导入向导里选择「编码」为「UTF-8」
- 确认导入后,中文和特殊字符就会正常显示了
为什么会出现Don’t这种乱码?
那是典型的UTF-8字符被用ISO-8859-1解码导致的:’是UTF-8的特殊字符,当用ISO-8859-1打开时,就会被拆成’这三个乱码字符。只要保证导出和打开都用UTF-8,这个问题就彻底解决了。
内容的提问来源于stack exchange,提问作者Praveen DA
相关产品推荐
相关产品推荐

