Jupyter Notebook怎么解决中文乱码

老雪同学_2114

老雪同学_2114

2026-08-09

1013人浏览

原创

jupyter中文乱码主因是plt.rcparams['font.sans-serif']未正确配置,需同时解决字体存在性、缓存清理和axes.unicode_minus=false三问题;导出pdf乱码则属latex流程,须配tex发行版与ctex宏包。

jupyter notebook怎么解决中文乱码

plt.rcParams['font.sans-serif'] 设置不对,是绝大多数 Jupyter 中文乱码的直接原因。不是装了中文语言包就自动生效,Matplotlib 默认根本不用中文字体,得手动指定,而且必须配对解决两个问题:字体路径可用 + Unicode 负号不崩。

为什么 plt.rcParams['font.sans-serif'] = ['SimHei'] 会失效?

这行代码本身没错,但实际执行时可能卡在三个地方:

  • SimHei 在你的系统里根本不存在——Windows 有,macOS/Linux 默认没有,pip install 不会自动装字体文件
  • 你改了配置,但没清 Matplotlib 缓存,旧字体映射还在内存里,重启 kernel 也不管用
  • 只设了 font.sans-serif,漏掉 axes.unicode_minus = False,负号(如 -5)显示成方块

怎么确认自己有哪些中文字体可用?

别猜,直接查:

import matplotlib.font_manager as fm
fonts = [f.name for f in fm.fontManager.ttflist]
print(sorted(set(fonts)))

运行后看输出里有没有 SimHei、Microsoft YaHei、Noto Sans CJK SC 或 AR PL UKai CN 这类常见中文字体名。没有就别硬写 ['SimHei'],换成列表里真实存在的那个。

Jupyter Notebook 7.5.4
Jupyter Notebook 7.5.4

Jupyter Notebook 7.5.4 官方 PyPI wheel 包下载,适合用于本地交互式代码运行、数据分析、教学演示和配置文件实践。

下载

临时生效 vs 一劳永逸:两种改法区别在哪?

临时改(每次 notebook 开头加):

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Noto Sans CJK SC']  # 替换为你查到的真实字体名
plt.rcParams['axes.unicode_minus'] = False

一劳永逸(改全局配置):

  • 先运行 import matplotlib; print(matplotlib.matplotlib_fname()) 找到 matplotlibrc 文件位置
  • 编辑该文件,取消注释并修改两行:
    font.family: sans-serif
    font.sans-serif: Noto Sans CJK SC, DejaVu Sans, Liberation Sans, Bitstream Vera Sans, sans-serif
  • 删掉缓存:rm -rf ~/.cache/matplotlib(Linux/macOS)或 del /q "%LOCALAPPDATA%\matplotlib\cache"(Windows)
  • 重启 Jupyter Notebook 进程(不只是 restart kernel)

导出 PDF 时中文又变方块?那是 nbconvert+XeLaTeX 的事

图表里中文正常 ≠ 导出 PDF 正常。这是因为 jupyter nbconvert --to pdf 走的是 LaTeX 流程,和 Matplotlib 字体无关:

  • 必须安装完整 TeX 发行版(如 TeX Live 或 MacTeX),不能只装 xelatex 命令
  • 需要额外传参:jupyter nbconvert --to pdf --no-input --pdf-default-latex-engine=xelatex
  • 若仍乱码,说明 LaTeX 模板没加载中文字体,得在 notebook 里加 raw cell,写 LaTeX 命令:\usepackage{ctex}

最易被忽略的一点:改完 matplotlibrc 后不删缓存,或者改了但没重启 Jupyter server,这两步跳过,前面所有操作都白做。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

120

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

100

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

80

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

60

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

80

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

280

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

180

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

140

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

80

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程