PySpark在Jupyter Notebook中无法正常显示波兰语字符求助
解决PySpark在Jupyter Notebook中波兰语字符显示为问号的问题
修复步骤
1. 先搞定终端编码
Jupyter的输出编码依赖启动它的终端环境,哪怕Python已经设了UTF-8,终端编码不对照样乱码:
- Windows命令行里先执行
chcp 65001切换到UTF-8编码,再启动Jupyter - Linux/macOS终端里先执行
export LC_ALL=en_US.UTF-8和export LANG=en_US.UTF-8,再启动Jupyter
2. 给Spark加编码配置
初始化SparkSession时,强制指定Java端的编码参数,避免Spark输出时转码出错:
from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("PolishCharsFix") \ .config("spark.driver.extraJavaOptions", "-Dfile.encoding=UTF-8") \ .config("spark.executor.extraJavaOptions", "-Dfile.encoding=UTF-8") \ .getOrCreate()
顺便给Python再加层保险(Python3.6部分环境可能需要):
import sys reload(sys) sys.setdefaultencoding('utf-8')
3. 修改Jupyter内核配置
找到Python3内核的配置文件kernel.json(路径一般是~/.local/share/jupyter/kernels/python3/,系统级路径可能在/usr/share/jupyter/kernels/python3/),编辑env字段添加编码相关变量:
"env": { "LC_ALL": "en_US.UTF-8", "LANG": "en_US.UTF-8", "PYTHONIOENCODING": "UTF-8" }
保存后重启Jupyter生效。
4. 临时应急方案
如果上面的方法暂时没生效,可以在打印时强制编码转换:
print(f"Średnia ilość wynosi: {my_avg}".encode('utf-8').decode('utf-8'))
内容的提问来源于stack exchange,提问作者Katy
相关产品推荐
相关产品推荐

