Docker容器中文乱码终极解决方案:从Locale原理到生产环境配置
1. 问题根源与核心思路在Docker容器里遇到中文乱码这事儿我估计不少人都踩过坑。表面上看是容器里显示不了中文或者程序处理中文文件、日志时出现一堆问号或菱形符号。但本质上这不是Docker的“Bug”而是我们构建或运行容器时忽略了一个基础但至关重要的系统环境配置Locale区域设置。你可以把Locale理解成操作系统的“文化包”。它决定了系统如何显示和处理与语言、地域相关的信息比如字符编码是UTF-8还是GBK、货币格式、时间日期格式等。我们常用的支持全球大多数语言的UTF-8编码就是Locale设置的一部分。一个典型的完整Locale设置看起来像这样zh_CN.UTF-8这表示中文zh、中国CN、使用UTF-8字符编码。那么为什么一个“纯净”的Docker容器默认没有中文Locale呢这得从Docker镜像的设计哲学说起。主流的官方基础镜像比如ubuntu:latest、debian:buster-slim、alpine:latest为了追求极致的轻量化和小体积通常会只包含维持系统基本运行所必需的最简组件。像中文Locale支持、中文字体这些对于服务器运行并非必需的东西在构建镜像时就被刻意剔除了。因此当你运行locale命令查看容器内的区域设置时很可能会发现只有POSIX或C这种最小化、仅支持ASCII字符的配置。所以解决这个问题的核心思路非常明确我们需要在容器内部主动安装并配置好支持中文的Locale环境必要时还需要安装中文字体。这个操作可以在两个时机进行一是在构建Docker镜像时通过Dockerfile写入这些配置步骤一劳永逸二是在运行已有容器时临时进入容器内部进行配置。显然前者是更规范、更值得推荐的生产环境做法。2. 解决方案全景与选型考量面对“容器中文支持”这个问题解决方案根据基础镜像的不同和具体需求大致可以分为几个流派。选择哪种取决于你的应用场景、对镜像体积的敏感度以及维护的便利性。2.1 基于Debian/Ubuntu等完整发行版镜像的解决方案这是最常见、资料最全的方案。因为Debian/Ubuntu的包管理工具apt非常强大软件源丰富。核心步骤通常包括安装locales软件包这个包提供了管理和生成Locale的工具。通过locale-gen命令生成我们需要的Locale如zh_CN.UTF-8。设置环境变量LANG,LC_ALL等告诉系统使用我们新生成的Locale。这种方案的优势是简单直接兼容性好几乎适用于所有情况。缺点是会稍微增加镜像体积因为要安装locales包及其依赖。2.2 基于Alpine镜像的轻量级解决方案Alpine Linux因其超小的体积通常只有5MB左右而在Docker社区备受青睐。但它的轻量源于使用了musl libc而不是常见的glibc并且包管理工具是apk。在Alpine中配置Locale的步骤与Debian系有所不同安装locales包在Alpine中这个包可能叫locale或locales具体看版本。Alpine通常使用/etc/profile.d/目录下的脚本或直接修改/etc/profile来设置环境变量而不是像Debian那样有locale-gen。选择Alpine方案的核心驱动力是对镜像体积的极致追求。但需要注意某些依赖特定glibc行为的软件在Alpine上可能运行不佳需要测试。2.3 针对特定应用的解决方案有时乱码问题并非出在系统层面而是出在具体的应用程序上。例如Java应用JVM有自己的一套字符编码探测逻辑。除了系统Locale你可能还需要确保JVM的启动参数如-Dfile.encodingUTF-8或环境变量如JAVA_TOOL_OPTIONS正确设置了编码。MySQL/Oracle数据库数据库有服务端字符集、客户端字符集、连接字符集。即使容器系统Locale是UTF-8如果数据库连接配置的字符集是latin1查询结果照样会乱码。这需要在数据库配置文件中如my.cnf设置character-set-serverutf8mb4等相关参数。Python/Node.js等脚本在代码文件开头声明编码如# -*- coding: utf-8 -*-是好的实践但更根本的是要保证运行环境的Locale是UTF-8否则标准输入输出、文件读写都可能出错。注意不要混淆“系统Locale”和“应用层编码设置”。系统Locale是地基应用设置是在地基上的建筑。当地基Locale不对时单纯调整应用设置往往事倍功半甚至无法根本解决问题。我们的首要任务永远是先打好地基。3. 实战操作构建支持中文的Docker镜像理论说再多不如动手做一遍。下面我将以最常用的ubuntu:22.04和alpine:latest为例展示如何通过Dockerfile构建一个“开箱即用”支持中文的镜像。同时我也会分享一些在构建过程中容易踩的坑和优化技巧。3.1 Ubuntu/Debian 系镜像的Dockerfile详解我们先来看一个功能完整、经过优化的Dockerfile示例# 使用官方Ubuntu LTS版本作为基础镜像 FROM ubuntu:22.04 # 设置构建时的环境变量用于APT安装的非交互模式避免阻塞 ARG DEBIAN_FRONTENDnoninteractive # 1. 更新软件源并安装必要软件包 RUN apt-get update apt-get install -y --no-install-recommends \ locales \ fonts-noto-cjk \ # 安装思源黑体中文字体支持简繁体 rm -rf /var/lib/apt/lists/* # 2. 生成所需的Locale这里生成中文UTF-8和英文UTF-8 RUN sed -i /en_US.UTF-8/s/^# // /etc/locale.gen \ sed -i /zh_CN.UTF-8/s/^# // /etc/locale.gen \ locale-gen # 3. 设置系统默认的Locale环境变量 ENV LANGzh_CN.UTF-8 ENV LANGUAGEzh_CN:zh ENV LC_ALLzh_CN.UTF-8 # 后续是你的应用部署步骤... # COPY ... # RUN ... # CMD ...逐行解析与避坑指南ARG DEBIAN_FRONTENDnoninteractive这一行至关重要。在安装locales包的过程中系统可能会弹出一个对话框让你选择要生成的Locale这在非交互式的Docker构建过程中会导致构建失败。设置这个环境变量就是为了让apt以非交互模式运行自动处理这些配置。--no-install-recommends这个apt参数告诉系统只安装主依赖包不安装推荐的额外包。这能有效减少最终镜像的体积。对于locales包来说这通常是安全的。安装中文字体我特意添加了fonts-noto-cjk。为什么因为只有Locale没有字体虽然命令行和某些程序可能能处理中文编码不会乱码但一旦涉及到图形界面或需要渲染中文文本时例如生成带有中文的图表、PDF或在某些Web应用中就会显示为方框或乱码。Noto字体是Google开源的优质字体覆盖全面。清理APT缓存 rm -rf /var/lib/apt/lists/*是Dockerfile的最佳实践。apt-get update会下载软件源索引apt-get install会下载软件包这些缓存文件在安装完成后就不再需要删除它们可以节省大量空间往往有几十MB。sed命令生成Locale/etc/locale.gen文件列出了所有可生成的Locale但默认都被注释了行首有#。我们使用sed命令找到en_US.UTF-8和zh_CN.UTF-8这两行并删除行首的#来启用它们然后执行locale-gen命令实际生成这些Locale数据。环境变量设置我们通过ENV指令设置了三个关键环境变量。LANG是默认设置LC_ALL是一个强力覆盖拥有最高优先级。设置LANGUAGE可以影响某些程序的界面语言。这些环境变量会在容器启动时生效为所有在容器内运行的程序提供统一的区域设置。3.2 Alpine 镜像的Dockerfile实现Alpine的实现有所不同因为它更精简FROM alpine:latest # 1. 更新源并安装必要的包 # alpine的locales包可能提供了locale生成工具但更常见的做法是直接安装lang包或特定语言包 RUN apk update apk add --no-cache \ tzdata \ musl-locales musl-locales-lang \ # 提供locale支持包名可能随版本变化 font-noto-cjk \ # Alpine下的Noto中文字体包 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ echo Asia/Shanghai /etc/timezone # 2. 设置Locale环境变量 ENV LANGzh_CN.UTF-8 ENV LANGUAGEzh_CN:zh ENV LC_ALLzh_CN.UTF-8 # 注意Alpine的musl libc对Locale的支持与glibc有差异。 # 某些极其老旧或对locale依赖非常特殊的软件可能仍有问题。 # 更彻底的做法是安装glibc兼容层但这会显著增加体积违背使用Alpine的初衷。Alpine方案的重要提示包名变化Alpine的包名和内容可能在不同版本间有调整。musl-locales这个包名是我根据常见情况列举的实际使用时建议先apk search locale查找当前镜像可用的确切包名。本质差异Alpine使用musl libc其Locale实现是轻量级的。对于绝大多数只是需要正确显示和处理UTF-8编码中文的应用来说设置LANGzh_CN.UTF-8环境变量已经足够。但如果你的应用深度依赖glibc的locale行为例如某些复杂的字符串排序或格式化可能会遇到边缘情况。字体安装font-noto-cjk是Alpine社区维护的字体包确保了中文字体的可用性。3.3 构建与验证无论使用哪个Dockerfile构建和验证的步骤是相似的# 1. 构建镜像假设Dockerfile在当前目录 docker build -t my-ubuntu-with-zh . # 2. 运行一个交互式容器进行测试 docker run -it --rm my-ubuntu-with-zh /bin/bash # 3. 进入容器后执行验证命令 locale # 查看当前Locale设置应显示zh_CN.UTF-8 echo $LANG # 查看LANG变量 echo -e \xe4\xb8\xad\xe6\x96\x87 # 输出“中文”的UTF-8字节序列应正确显示“中文” # 或者创建一个中文文件 echo 测试中文 test.txt cat test.txt # 应正确显示如果一切顺利你将看到一个能完美处理中文的容器环境。4. 运行时容器临时配置与调试技巧虽然推荐在构建时固化配置但总有需要临时进入一个正在运行、但不支持中文的容器进行调试的时候。这时我们可以手动在容器内执行配置命令。4.1 对正在运行的容器进行配置假设你有一个正在运行的容器名字或ID是my_container。# 1. 进入容器的shell环境 docker exec -it my_container /bin/bash # 2. 根据容器的基础系统执行安装和配置以下以Debian/Ubuntu为例 # 如果容器内没有apt需要先判断其包管理器yum, apk等 apt-get update apt-get install -y locales locales-all # 安装localeslocales-all包含了所有预编译的locale数据更省事但体积大 # 3. 生成并设置Locale # 方法A使用locale-gen需要locales包 echo zh_CN.UTF-8 UTF-8 /etc/locale.gen locale-gen zh_CN.UTF-8 # 方法B直接设置环境变量临时退出shell即失效 export LANGzh_CN.UTF-8 export LC_ALLzh_CN.UTF-8 # 4. 验证 locale重要提醒在运行的容器内使用apt-get install会改变容器层但这不是持久化的最佳方式。一旦容器被删除这些更改就丢失了。这种方法仅适用于紧急调试和问题排查。真正的解决方案还是应该修改Dockerfile并重建镜像。4.2 通过docker run命令传递环境变量如果你使用的镜像内部已经生成了zh_CN.UTF-8这个Locale比如使用了我们上面构建的镜像或者某些官方镜像已经包含只是默认没有启用那么最简单的办法是在启动容器时通过-e参数传递环境变量docker run -it -e LANGzh_CN.UTF-8 -e LC_ALLzh_CN.UTF-8 ubuntu:22.04 /bin/bash这样容器一启动就会使用我们指定的Locale设置。这是一种非常灵活的方式特别是当你使用第三方镜像且不想自己重建时。4.3 高级调试当设置后仍然乱码有时候即使设置了Locale某些程序还是乱码。这时候就需要分层排查检查程序自身的编码设置比如一个Python脚本确保文件开头有# -*- coding: utf-8 -*-并且文件本身是以UTF-8编码保存的。对于Java程序检查JVM参数。检查终端或客户端的编码你用来连接容器的终端如MobaXterm、SecureCRT、iTerm2或SSH客户端其字符编码设置也必须为UTF-8。如果客户端是GBK编码那么服务器容器输出UTF-8显示自然会乱码。这是一个非常常见的“冤枉路”。检查数据来源的编码如果你处理的是一个外部文件需要确认这个文件本身的编码是什么。可以用file -i filename.txt命令需安装file包来检测文件编码。容器Locale是UTF-8但如果你读入一个GBK编码的文件而不进行转码结果就会乱码。使用locale -a命令这个命令可以列出容器内所有已生成的Locale。确保zh_CN.utf8或zh_CN.UTF-8在列表中。如果没有说明Locale生成步骤失败了。5. 生产环境最佳实践与疑难杂症将解决方案应用到生产环境时我们需要考虑更多关于稳定性、可维护性和性能的细节。5.1 多阶段构建与镜像优化对于生产镜像我们追求小体积、高安全。可以使用多阶段构建只在最终阶段安装必要的Locale支持。# 第一阶段构建阶段 FROM ubuntu:22.04 as builder RUN apt-get update apt-get install -y build-essential # ... 编译你的应用 # 第二阶段运行阶段 FROM ubuntu:22.04 # 仅安装运行所需的最小化包 RUN apt-get update apt-get install -y --no-install-recommends \ ca-certificates \ locales \ sed -i /zh_CN.UTF-8/s/^# // /etc/locale.gen \ locale-gen zh_CN.UTF-8 \ rm -rf /var/lib/apt/lists/* ENV LANGzh_CN.UTF-8 LC_ALLzh_CN.UTF-8 # 从构建阶段拷贝编译好的应用 COPY --frombuilder /app /app WORKDIR /app CMD [./your-app]这样最终的镜像只包含运行环境和Locale支持去掉了编译工具等冗余内容更加安全轻量。5.2 与CI/CD流水线集成在团队协作和自动化部署中Locale配置应该作为基础镜像的一部分。建议创建一个公司或团队内部通用的“基础镜像”这个镜像已经配置好了正确的时区、Locale、常用工具如curl, vim等。然后所有业务镜像都从这个基础镜像派生FROM my-company-base:with-zh。这保证了环境的一致性也简化了各个业务Dockerfile的编写。5.3 特定应用场景的深度配置数据库容器MySQL对于MySQL必须在配置文件如/etc/mysql/conf.d/charset.cnf中设置[mysqld] character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci [client] default-character-setutf8mb4 [mysql] default-character-setutf8mb4注意现在推荐使用utf8mb4而非utf8因为utf8mb4才是真正的完整UTF-8支持emoji等四字节字符。Java应用容器在Dockerfile中除了系统Locale最好也显式设置JVM编码ENV JAVA_TOOL_OPTIONS-Dfile.encodingUTF-8 -Duser.languagezh -Duser.countryCN -Duser.timezoneAsia/Shanghai或者在你的Spring Boot的application.properties中设置server.tomcat.uri-encodingUTF-8。5.4 常见问题排查速查表问题现象可能原因排查命令/解决方案执行locale命令报错locale: Cannot set LC_CTYPE1. 所需的Locale未生成。2. 环境变量设置的Locale名称错误。1.locale -a查看可用Locale。2. 检查LANG等变量值是否与locale -a列表中的名称完全一致注意大小写和格式。中文显示为方框□缺少中文字体。安装中文字体包如fonts-noto-cjk(Debian/Ubuntu)或font-noto-cjk(Alpine)。日志文件中的中文乱码1. 程序写日志时未使用UTF-8编码。2. 查看日志的终端或工具编码非UTF-8。1. 检查应用程序的日志配置强制指定UTF-8编码。2. 用cat命令在容器内直接查看如果正常则是客户端问题。从Windows宿主机复制到容器的中文文件乱码Windows默认使用GBK编码而容器是UTF-8。1. 推荐在Windows上使用支持UTF-8的编辑器如VS Code保存文件为UTF-8。2. 在容器内使用iconv命令转换文件编码iconv -f GBK -t UTF-8 input.txt -o output.txt。Alpine镜像中设置了Locale但某些命令如date输出仍不是中文Alpine的musl libc对Locale的支持有限某些命令的本地化数据可能不完整。安装lang包或特定的语言包如apk add lang。如果对locale要求高考虑换用基于glibc的镜像。5.5 一个容易被忽略的细节Shell环境你可能会发现在Dockerfile中设置了ENV但通过docker exec进入容器后用echo $LANG查看却发现是空值或默认值。这通常是因为你启动的shell如/bin/bash会读取自己的配置文件如~/.bashrc这些配置文件可能会覆盖全局环境变量。确保你的shell配置没有重置LANG等变量。一个更稳妥的方法是在Dockerfile中不仅设置ENV也把环境变量写入全局profile文件RUN echo export LANGzh_CN.UTF-8 /etc/profile.d/lang.sh \ echo export LC_ALLzh_CN.UTF-8 /etc/profile.d/lang.sh这样无论以何种方式登录shell都会加载这些设置。解决Docker容器中文支持的问题本质上是对Linux系统国际化i18n基础知识的实践。它并不复杂但要求我们对镜像构建、系统配置有更细致的理解。从构建时就规划好Locale和字体而不是等到出了问题再仓促补救这才是符合生产要求的做法。

相关新闻

JavaScript批量提取网页表格数据:从DOM操作到自动化爬虫实战

JavaScript批量提取网页表格数据:从DOM操作到自动化爬虫实战

1. 从“手动复制”到“一键收割”:为什么我们需要批量提取网页表格数据 作为一名和数据打交道的开发者,我猜你肯定遇到过这样的场景:领导甩过来一个网页链接,说“小王,把这个页面上的几十个表格数据都整理到Excel里&am…

2026/10/5 8:38:49 阅读更多 →
C语言:指针和数组

C语言:指针和数组

文章目录前言本文旨在系统性地介绍C语言中的指针和数组。一、数组名的理解1.1、认识数组名1.2、重新认识指针访问数组1.3、再谈字符指针二、一维数组传参和指针三、冒泡排序四、数组指针变量4.1、数组指针变量的定义4.2、数组指针变量的初始化五、二维数组传参和指针六、指针数…

2026/10/4 2:31:40 阅读更多 →
Java AI Agent框架解析:技术架构与实战应用

Java AI Agent框架解析:技术架构与实战应用

1. Java生态迎来AI Agent框架:技术变革还是概念炒作? 最近在开发者社区看到一个热议话题:Java终于有了自己的AI Agent框架。作为一名长期混迹Java生态的老兵,我第一反应是既兴奋又怀疑——兴奋的是Java在AI浪潮中终于不再缺席&…

2026/9/29 14:18:41 阅读更多 →

最新新闻

Agent-Reach:多Agent系统通信基础设施的设计与实战解析

Agent-Reach:多Agent系统通信基础设施的设计与实战解析

1. 从"三个Agent互相推诿"说起:Agent-Reach要解决的根子问题做多Agent系统做过一段时间的人,大概率都经历过这么一个荒诞场景:你搭了三个Agent,一个管订单解析,一个管库存查询,一个管售后策略&am…

2026/10/14 0:51:56 阅读更多 →
名企AI面试100题怎么刷?从知识梳理到复盘闭环的完整方法

名企AI面试100题怎么刷?从知识梳理到复盘闭环的完整方法

简介:《名企AI面试100题》是由七月在线团队从近4000道名企AI笔试/面试题中精挑细选、整理成册的PDF文档,面向正在准备算法工程师、机器学习工程师等AI岗位面试的求职者,以及希望系统复习计算机基础与AI核心知识的开发者。这份PDF共收100道典型…

2026/10/14 0:51:56 阅读更多 →
Flink CDC 3.0 实时同步 MySQL 到 Doris 全攻略

Flink CDC 3.0 实时同步 MySQL 到 Doris 全攻略

简介:面向具备一定Flink基础的大数据研发人员,这份由尚硅谷研究院编写的技术文档围绕Flink CDC 3.0展开,系统讲解CDC基本概念、基于查询与基于Binlog两类方式的差异,并重点演示flink-cdc-connectors组件从MySQL等数据库读取全量与…

2026/10/14 0:51:56 阅读更多 →
SPSS变量处理避坑指南:从数据录入到分析就绪的完整链路

SPSS变量处理避坑指南:从数据录入到分析就绪的完整链路

1. 变量视图里那些没人告诉你的事很多人学SPSS,第一步就卡在数据录入上。打开软件,看到“数据视图”和“变量视图”两个标签页,随手在数据视图里敲了几个数字,然后兴冲冲点“分析”,结果发现菜单里全是灰的&#xff0c…

2026/10/14 0:51:56 阅读更多 →
图像噪声去除实验:均值、中值与高斯滤波的PSNR/SSIM对比与调参

图像噪声去除实验:均值、中值与高斯滤波的PSNR/SSIM对比与调参

1. 图像噪声去除实验的整体设计思路数字图像处理这门课,实验环节往往比理论课更让人头疼。课本上给你一个公式,告诉你“用中值滤波可以去除椒盐噪声”,但真到动手写代码的时候,你会发现事情远没有那么简单——噪声类型怎么判断&am…

2026/10/14 0:51:56 阅读更多 →
LeetCode 543:二叉树直径的高效解法与JS实现

LeetCode 543:二叉树直径的高效解法与JS实现

1. 题目理解与需求分析今天要解决的是LeetCode第543题"二叉树的直径"。这是一道经典的二叉树遍历问题,题目描述很简单:给定一棵二叉树,你需要计算它的直径长度。二叉树的直径是指树中任意两个结点间最长路径的长度,这条…

2026/10/14 0:50:56 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →