字符编码原理与乱码修复实战:从UTF-8、GBK到系统排查
1. 乱码的本质当字符“迷路”时发生了什么如果你在程序开发、数据处理甚至日常办公中还没遇到过乱码那你的职业生涯可能还不够“完整”。屏幕上那一堆问号、方块或者像“发生错误”这样的天书就是乱码的典型面孔。它不是什么高深的魔法而是信息在传递过程中因为“语言”编码不通而导致的严重误解。想象一下你发送方用中文写了一封信但收信人接收方却以为这是一封用英文写的信并固执地按照英文字母的规则去解读每一个笔画。结果就是原本优美的汉字在他眼里变成了一堆毫无意义的乱码。在计算机世界里这个过程被精确地定义为“编码”和“解码”。编码Encode是把人类可读的字符如“你好”转换成计算机存储的二进制序列的过程解码Decode则是把这个二进制序列再转换回人类可读字符的过程。乱码就发生在解码时使用的“密码本”字符集与编码时使用的“密码本”不一致的那一刻。这个“密码本”就是字符编码Character Encoding。它是一套规则定义了每个字符对应哪个数字编号码点。最常见的几个“密码本”你一定听过ASCII老祖宗只定义了128个字符主要是英文字母、数字和控制符。在它看来一个中文字符是“无法理解”的。GBK/GB2312中文扩展的“密码本”在ASCII基础上用两个字节来表示一个中文字符。它是早期Windows中文系统和很多国内遗留系统的默认选择。UTF-8当今互联网的“世界语”。它是一种变长编码兼容ASCIIASCII字符用1个字节其他字符可能用2到4个字节。它的目标是统一所有语言的字符。Windows-1252 (或 CP1252)微软为西欧语言定制的扩展ASCII编码在ISO-8859-1基础上增加了一些印刷符号。当你看到“€”显示成“€”时很可能就是UTF-8数据被误用CP1252解码了。乱码问题之所以棘手是因为它往往发生在数据流转链路的任何一个环节从文件保存、数据库存储、网络传输到程序处理、终端显示每一步都可能埋下编码不一致的“地雷”。更麻烦的是一旦乱码产生原始信息就可能遭到不可逆的破坏就像把一本中文书撕碎后再试图用英文语法去拼凑一样困难。所以面对乱码我们首先要做的不是慌张而是化身“数字侦探”理解其背后的编码原理并掌握一套系统性的排查和恢复方法。这篇文章就是为你准备的“乱码恢复指北”。2. 乱码诊断识别症状定位病灶遇到乱码第一步永远是诊断。不同的错误编码组合会产生特征鲜明的“症状”通过观察这些症状我们可以快速缩小问题范围。2.1 常见乱码模式与成因速查你可以把下面这个表格当作你的“乱码症状诊断手册”乱码示例假设原中文为“你好”可能的原因编码 - 错误解码典型场景ä½ å¥½UTF-8 编码 - 被用 Latin-1 (ISO-8859-1) 或 CP1252 解码网页、JSON、API响应头未声明UTF-8被浏览器或工具默认以西欧编码打开。浣犲ソGBK 编码 - 被用 UTF-8 解码中文Windows系统生成的文本文件默认GBK在默认UTF-8的编辑器如VSCode或Linux终端中打开。你好变成??或(替换字符)任意编码 - 被用 ASCII 解码数据库连接、终端环境变量如LANGC强制使用ASCII子集无法识别的字符被替换。混杂着锟斤拷()UTF-8 编码 - 被用 GBK 解码 - 再次被用 UTF-8 解码双重编码常见于Web开发中参数经过多次错误转码。锟斤拷是UTF-8的BOM头EF BB BF被GBK解码后的结果。全部是问号???字节序列在目标编码中完全无效文件本身已损坏或解码器遇到无法处理的字节。类似由于系统内部错误的长乱码UTF-8 编码 - 被用 GBK 解码单次与第一种情况类似但解码器不同。这是“由于系统内部错误”的UTF-8字节被GBK解读的结果。注意(UFFFD) 是Unicode中的“替换字符”专门用于表示在解码时无法识别的字符。一旦看到它说明原始字节信息已经丢失恢复难度极大。2.2 系统性排查路径当乱码出现遵循一个清晰的排查路径可以事半功倍。我通常的排查顺序是确认数据源数据从哪来文件、数据库、网络API、还是命令行输出源头使用的编码是什么例如Windows记事本保存的.txt文件可能是ANSI即GBKLinux系统文件通常是UTF-8老旧MySQL表可能默认是latin1。检查传输与处理环节环境变量在终端执行echo $LANG或chcpWindows。LANGC或代码页437意味着ASCII环境中文必乱。程序配置你的IDE如VSCode、IntelliJ IDEA、编辑器如VS、Keil5的文件编码设置是否正确数据库连接字符串如JDBC URL中的useUnicodetruecharacterEncodingUTF-8是否指定协议与元数据HTTP响应头是否有Content-Type: text/html; charsetutf-8HTML文件是否有meta charsetutf-8这些是告诉浏览器如何解码的“说明书”缺失或错误就会导致乱码。使用工具进行字节级检查这是最关键的一步。用十六进制编辑器如hexdump -C filename命令或VSCode的Hex Editor插件直接查看文件的原始字节。对于“你好”UTF-8编码你会看到e4 bd a0 e5 a5 bd。如果这些字节被用GBK解码就会去寻找GBK中e4bd,a0e5,a5bd对应的字符从而产生乱码。直接看字节能帮你确认数据的“真实面目”。实操心得很多乱码问题尤其是Web开发中的源于“想当然”。开发者以为所有环境都是UTF-8但服务器、数据库、客户端可能各有各的“方言”。养成在项目伊始就明确并统一约定编码强烈建议UTF-8的习惯能从根源上避免90%的乱码。3. 乱码修复实战从原理到工具诊断完毕接下来就是修复。修复的核心思想是“用正确的解码方式重新解读字节流”或者“将错误解码后的字符串逆向回字节流再用正确编码解码”。3.1 基础修复编码转换大多数情况你只是需要将数据从一种编码转换为另一种编码。在Python中这是最直接的方式# 场景你拿到了一个被错误解码的字符串比如误用latin1解码了UTF-8数据 wrong_str ä½ å¥½ # 这是“你好”的UTF-8字节被latin1解码的结果 # 修复步骤1. 先编码回原始错误的“字节” 2. 再用正确的编码解码 # 假设我们推断它是UTF-8字节被latin1解码了 byte_stream wrong_str.encode(latin-1) # 逆向操作得到原始字节b\xe4\xbd\xa0\xe5\xa5\xbd correct_str byte_stream.decode(utf-8) # 用正确的UTF-8解码 print(correct_str) # 输出你好 # 通用函数 def fix_mojibake(wrong_str, from_encodinglatin-1, to_encodingutf-8): try: return wrong_str.encode(from_encoding).decode(to_encoding) except Exception as e: return f转换失败: {e}在命令行中iconv是跨平台的编码转换神器# 将文件从GBK转换为UTF-8 iconv -f GBK -t UTF-8 input.txt -o output_utf8.txt # 查看文件编码猜测不完全准确 file -i input.txt # 对于未知编码可以尝试用 encaLinux或 uchardetPython库探测在Java中需要特别注意字符串和字节数组的转换// 错误示例直接使用平台默认编码这是万恶之源 String wrongStr new String(byteArray); // 依赖file.encoding系统属性不稳定 // 正确做法始终显式指定编码 String correctStr new String(byteArray, StandardCharsets.UTF_8); // 修复乱码字符串假设是GBK字节被UTF-8解码成了乱码字符串 String garbled 浣犲ソ; // “你好”的GBK字节被UTF-8解码的结果 byte[] originalBytes garbled.getBytes(StandardCharsets.UTF_8); // 逆向得到GBK字节 String fixed new String(originalBytes, Charset.forName(GBK)); System.out.println(fixed); // 输出你好踩坑记录Java中String.getBytes()和new String(byte[])如果不指定编码会使用JVM默认编码由file.encoding系统属性决定。这导致在A机器上正常的程序到B机器上就乱码。务必在任何涉及IO的地方使用StandardCharsets.UTF_8或显式指定Charset。3.2 高级场景与复杂乱码修复有些乱码是“复合伤”需要更精细的手术。场景一双重编码“锟斤拷”的由来这是UTF-8 - GBK - UTF-8 的错误链条。修复思路是逆向执行两次解码。double_encoded 锟斤拷 # 经典双重编码结果 # 1. 将“锟斤拷”用UTF-8编码回字节这是中间错误的GBK字符串的UTF-8字节 step1_bytes double_encoded.encode(utf-8) # 得到 b\xe9\x94\x9f\xe6\x96\xa4\xe6\x8b\xb7 # 2. 将这些字节用GBK解码得到第一次错误解码后的中间字符串 step2_str step1_bytes.decode(gbk, errorsignore) # 可能得到乱码但其中包含原始UTF-8字节信息 # 3. 再将这个中间字符串用latin-1或原始错误编码编码回字节理论上得到最原始的UTF-8字节 # 这个过程需要根据实际情况调整有时需要尝试多种组合。最可靠的方法是追溯源头避免双重编码发生。场景二文件BOM字节顺序标记问题BOMEF BB BF是UTF-8等编码放在文件开头表示编码的标记。但有些工具不识别BOM会把它当作文本内容显示为“”。处理方式保存时选择“UTF-8无BOM”格式大多数现代编辑器的默认选项。用脚本去除BOMimport codecs def remove_bom(file_path): with open(file_path, r, encodingutf-8-sig) as f: # ‘-sig’会自动处理BOM content f.read() with open(file_path, w, encodingutf-8) as f: f.write(content)场景三终端/控制台乱码这是环境问题。需要确保输出终端能理解你发送的编码。Windows CMD/PowerShell使用chcp 65001切换到UTF-8代码页并配置终端字体支持如“Consolas”或“等距更纱黑体”。Linux/Mac终端确保LANG和LC_*环境变量设置为zh_CN.UTF-8或en_US.UTF-8。IDE内置终端如VSCode, IDEA在设置中搜索“Terminal › Integrated: Default Profile”或编码设置确保其与项目编码一致通常为UTF-8。3.3 必备工具链工欲善其事必先利其器。除了编程语言内置函数这些工具能极大提升效率编码检测工具uchardet(Python库)pip install chardet然后chardet.detect(byte_data)可以猜测字节流的编码准确率较高。enca(Linux)通过分析字符分布猜测文本编码对中文支持尚可。十六进制查看器VSCode的Hex Editor插件、hexdump -C(Linux/Mac)、Notepad的插件或HxD(Windows)。看原始字节是最权威的诊断方式。多功能文本编辑器Notepad和Sublime Text都提供了强大的编码转换、显示和重新加载功能可以即时切换编码查看效果。浏览器开发者工具网络请求的“Response Headers”里的Content-Type以及Elements里查看meta charset是排查网页乱码的必经之路。4. 防患于未然最佳实践与统一编码策略修复乱码是“亡羊补牢”而建立统一的编码策略则是“未雨绸缪”。对于任何新项目我的第一条军规就是全线UTF-8。4.1 项目级统一配置版本控制与编辑器在项目根目录放置.editorconfig文件强制所有参与者使用UTF-8。# .editorconfig root true [*] charset utf-8 end_of_line lf indent_style space indent_size 4确保Git等版本控制工具不自动转换编码检查.gitattributes。开发环境IDE/编辑器设置将VSCode、IntelliJ IDEA、PyCharm等的默认文件编码、新建文件编码、终端编码全部设置为UTF-8。对于VSCode中文显示乱码通常是因为打开了GBK编码文件但未正确检测右下角点击编码选择“通过编码重新打开” - “UTF-8”或“GBK”。数据库创建数据库和表时显式指定字符集为utf8mb4MySQL/MariaDB或UTF8PostgreSQL。连接字符串务必包含字符集参数如characterEncodingUTF-8。Web开发HTTP头部后端API务必在响应头中设置Content-Type: application/json; charsetutf-8或text/html; charsetutf-8。HTML在head的最前面声明meta charsetutf-8。表单提交确保HTML表单所在的页面是UTF-8或者表单明确设置accept-charsetUTF-8。文件交互读写文本文件时永远显式指定编码open(file.txt, r, encodingutf-8)。CSV、Excel等数据文件导入导出时注意选择编码。Python的pandas库在读取read_csv时也有encoding参数。4.2 环境变量与系统级设置Linux/Mac在~/.bashrc或~/.zshrc中设置export LANGen_US.UTF-8或zh_CN.UTF-8。Windows对于命令行程序可以在代码中或启动脚本里设置系统属性。例如Java应用启动时加-Dfile.encodingUTF-8。注意Windows控制台CMD/PowerShell的默认编码如GBK与程序内部UTF-8冲突是常见乱码源对于需要复杂中文输出的程序考虑使用GUI或Web界面。4.3 处理遗留系统与外部数据当你不得不与使用GBK等非UTF-8编码的遗留系统交互时明确边界在数据交换的边界层如API接口、文件读取处进行编码转换。内部处理一律使用UTF-8。尽早转换一旦从外部系统获取到数据立即将其转换为UTF-8并在整个应用内部保持此编码。输出时再转换向外部系统发送数据时在最后一刻将内部UTF-8数据转换为对方要求的编码如GBK。详细记录在接口文档中明确记录双方系统使用的编码避免后续维护者踩坑。5. 疑难杂症排查实录与经典案例理论说再多不如看几个实战中踩过的坑。这些案例来自真实的开发场景希望能帮你提前避雷。5.1 案例一Tomcat日志与控制台中文乱码问题Spring Boot应用部署在Tomcat下日志文件和控制台输出的中文全是乱码。排查检查应用代码所有读写均指定UTF-8。检查Tomcat的catalina.sh或catalina.bat启动脚本发现未设置JAVA_OPTS中的-Dfile.encoding。检查Linux服务器环境变量LANG发现是C即ASCII。解决治标在Tomcat启动脚本中设置JAVA_OPTS$JAVA_OPTS -Dfile.encodingUTF-8。治本修改服务器系统环境变量在/etc/environment中添加LANGen_US.UTF-8或zh_CN.UTF-8并重启相关服务。对于IntelliJ IDEA控制台乱码需要同时配置三项IDEA安装目录bin下的idea64.exe.vmoptions文件添加-Dfile.encodingUTF-8Run/Debug Configuration 的 VM options 添加-Dfile.encodingUTF-8以及确保项目文件编码为UTF-8。5.2 案例二数据库迁移中的乱码陷阱问题将数据从一个老旧的latin1编码的MySQL数据库迁移到新的utf8mb4数据库后中文显示为“???”。分析这是经典的“双重损失”问题。旧数据库的latin1列实际上存储的是其他编码如GBK的字节流但MySQL误以为这些字节是latin1字符。直接导出再导入到UTF-8库MySQL会尝试将“错误理解的latin1字符”转换为UTF-8导致信息丢失。正确迁移步骤从旧库导出时不要进行任何转换将数据以二进制形式如SELECT ... INTO OUTFILE或mysqldump时使用--default-character-setlatin1但确保客户端是二进制模式导出。将导出的数据文件通过一个外部脚本如Python用正确的源编码GBK读取再以UTF-8写入新文件。将转换后的文件导入到新的UTF-8数据库中。核心要点在数据库层面如果列被错误地定义为latin1但存的是GBK数据那么这些数据在MySQL眼里已经是“损坏”的。迁移的关键是绕过MySQL的编码转换在外部进行修正。5.3 案例三网络爬虫抓取到的乱码数据问题爬取某个网页部分内容正常部分中文是乱码。排查检查HTTP响应头发现Content-Type: text/html; charsetgb2312。用requests库抓取并设置response.encoding gb2312大部分内容正常。但仍有少量内容乱码查看网页源码发现页面内嵌了来自其他域或通过JS加载的内容其编码可能与主页面不同。解决import requests from bs4 import BeautifulSoup import chardet resp requests.get(url) # 方法1优先使用headers中声明的编码 if resp.encoding: resp.encoding resp.encoding else: # 方法2使用chardet检测 detected_encoding chardet.detect(resp.content)[encoding] resp.encoding detected_encoding if detected_encoding else utf-8 soup BeautifulSoup(resp.text, html.parser) # 对于可能混编的内容可以尝试局部重新解码 for element in soup.find_all([script, style, div]): if element.string and has_mojibake(element.string): # 尝试对局部字符串进行修复 try: fixed element.string.encode(latin-1).decode(gbk) element.string.replace_with(fixed) except: pass这个案例告诉我们网页编码可能不一致需要分层处理。5.4 常见问题速查表问题现象可能原因排查步骤与解决方案VSCode/终端打开文件中文乱码文件实际编码与编辑器默认编码不符。1. 查看VSCode右下角编码显示。2. 点击后选择“通过编码重新打开”尝试GBK、UTF-8等。3. 用file -i或十六进制查看器确认文件真实编码。Java程序运行时中文乱码JVM默认编码 (file.encoding) 非UTF-8。1. 启动命令加-Dfile.encodingUTF-8。2. 检查系统环境变量。3. 所有IO操作显式使用StandardCharsets.UTF_8。MySQL查询结果中文乱码连接层、客户端、数据库/表/列字符集不一致。1. 执行SHOW VARIABLES LIKE character_set_%;查看各环节字符集。2. 连接字符串加?characterEncodingUTF-8。3. 确保库、表、列字符集为utf8mb4。网页部分乱码HTML meta声明与HTTP头或文件实际编码冲突页面内混编。1. 检查浏览器开发者工具Network标签下的Response Headers。2. 检查HTML文件开头的meta charset。3. 两者必须一致且与实际文件编码一致。HTTP头优先级更高。文件内容复制后乱码复制源和粘贴目标的编码环境不同如从GBK终端复制到UTF-8编辑器。尽量使用文件传输而非直接复制文本。如果必须复制尝试在纯文本编辑器如Notepad中做中转并进行编码转换。中文路径/文件名乱码操作系统文件系统编码、命令行编码、程序内部编码不一致。在Linux/Mac下尽量使用英文路径。在Windows下确保程序使用Unicode API如Python的os模块通常已处理。处理乱码就像破译密码需要耐心和逻辑。核心永远是确定数据的原始字节找到正确的“密码本”编码去解读它并在你的系统内部统一使用一种“世界语”UTF-8。从今天起在你的每一个项目里都把编码规范明确写下来这将会为你和你的团队省下无数个调试乱码的深夜。

相关新闻

英雄联盟Seraphine:5分钟打造你的智能游戏决策助手

英雄联盟Seraphine:5分钟打造你的智能游戏决策助手

英雄联盟Seraphine:5分钟打造你的智能游戏决策助手 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾在对局开始时,面对陌生的队友和对手感到茫然?是否在BP阶段犹豫不…

2026/10/9 7:07:25 阅读更多 →
解决pip install SSL EOF错误:从原理到实战的完整指南

解决pip install SSL EOF错误:从原理到实战的完整指南

1. 问题引入:当 pip install 遇上神秘的SSL EOF错误 最近在配置一个Python环境,准备安装几个常用的数据分析库时,遇到了一个让人有点摸不着头脑的错误。命令行里敲下 pip install requests ,结果没有出现熟悉的下载进度条&…

2026/10/10 20:15:46 阅读更多 →
ESP32中LED 操作和呼吸灯控制实现

ESP32中LED 操作和呼吸灯控制实现

一、LED 操作介绍 源码下载地址: https://gitee.com/vi-iot/esp32-board.git 学嵌入式程序,第一步是 Helloworld,第二步就是点亮 LED 了,对于有开发经验的同学来说,点亮 LED 不是什么问题,本质上就是 GPIO 的高低电平操作,大家看下图是一个简单的 LED 电路, GPIO2…

2026/10/8 5:15:58 阅读更多 →

最新新闻

光储直柔:从刚性消费到柔性电网节点的建筑配电革命

光储直柔:从刚性消费到柔性电网节点的建筑配电革命

从“抽水马桶”变成“蓄水池”,这句话是我这两年和建筑业主聊配电改造时,最常用的一句类比。过去建筑用电是典型的刚性消费:光伏发多少、电网供多少,楼里就用多少,用不完的就浪费,不够了就向电网要&#xf…

2026/10/11 4:01:56 阅读更多 →
SAP MDG 功能范围说明(基于S/4HANA 2025)

SAP MDG 功能范围说明(基于S/4HANA 2025)

文章目录业务背景Master Data Governance (MDG)MDG, Central GovernanceMDG, ConsolidationMDG, Mass ProcessingMDG, Data quality managementMDG, Federated master data governanceMDG, Process analytics for master data主要功能业务背景 Master Data Governance (MDG) …

2026/10/11 4:01:55 阅读更多 →
Playwright自动化测试实战:从定位器到工程化落地

Playwright自动化测试实战:从定位器到工程化落地

1. 项目概述与整体设计思路1.1 为什么自动化测试在这个阶段值得重新选型我真正开始大规模把 Playwright 自动化测试用到业务项目里,差不多是在两年前。之前团队做 Web 端回归,用的还是老一套的 Selenium 体系,脚本写起来倒不难,真…

2026/10/11 4:01:55 阅读更多 →
Mac brew安装软件

Mac brew安装软件

安装brew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"brew 基本命令 1.Homebrew常用命令bre…

2026/10/11 4:01:55 阅读更多 →
鸿蒙化适配yaml_modify:YAML定点修改与配置治理实践

鸿蒙化适配yaml_modify:YAML定点修改与配置治理实践

改 YAML 这件事,做过配置文件自动化的人应该都有体会:读起来容易,改起来全是坑。尤其当文件里有注释、有嵌套结构、有历史遗留的乱序 key 时,常规做法——用解析库读进来、改掉、再序列化写出去——往往会把整个文件重排一遍&…

2026/10/11 4:01:55 阅读更多 →
安装谷歌浏览器

安装谷歌浏览器

安装谷歌浏览器 在众多电脑软件中浏览器应该是每台电脑的必备软件,如何选择浏览器,选择哪一款浏览器对于好多电脑小白来说可能不是那么在意,但事实上有一款合适的浏览器是相当重要的。 曾经我看过一个人的电脑,着实让我有些发疯&a…

2026/10/11 4:00:55 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →