Java开发中彻底解决乱码问题:从原理到实践的全链路编码防御体系
1. 项目概述从“乱码”到“福音”的救赎之路作为一名在Java后端领域摸爬滚打了十多年的老码农我敢说几乎每个Java开发者都曾在职业生涯的某个深夜被屏幕上那一堆“锟斤拷”、“烫烫烫”或者各种问号方块折磨得怀疑人生。乱码这个看似基础却又无处不在的“幽灵”轻则导致页面显示异常重则引发数据错乱、系统崩溃堪称Java开发中最顽固的“牛皮癣”之一。今天我想结合自己踩过的无数坑以及从无数项目中总结出的系统性方案来聊聊如何构建一套“再也不怕乱码”的防御体系。这不仅仅是解决一两个配置参数的问题而是一种从编码源头到数据展示全链路的编码意识与工程实践。所谓“福音”并非指某个神奇的万能库或一键配置而是一套可复制、可落地的编码治理心法。它涵盖了从开发环境设置、代码编写规范、框架配置、数据库交互到网络传输的每一个环节。理解并掌握这套心法意味着你能从被动地“救火”转向主动地“防火”在面对任何新项目、新框架、新中间件时都能迅速定位并解决编码问题。无论是处理遗留系统的历史乱码数据还是构建全新的全球化应用这套方法论都将是你最坚实的后盾。2. 乱码的本质与Java的编码模型2.1 字符编码的“巴别塔”困境要根治乱码必须首先理解它的根源。计算机底层只认识0和1字符尤其是中文、日文等非ASCII字符需要一套映射规则才能被存储和传输这套规则就是字符编码。乱码的本质就是编码与解码时使用了不同的映射规则。想象一下你编码方用中文写了一封信“你好”但信封上却错误地标注了这是日文编码为Shift_JIS。收信人解码方按照日文规则解码为Shift_JIS去解读看到的自然是一堆无法理解的符号乱码。在Java世界里最常见的编码包括ASCII老祖宗只支持英文字母和少数控制字符。ISO-8859-1 (Latin-1)扩展了ASCII支持西欧语言但依然是单字节编码。GB2312 / GBK / GB18030中国国家标准用于编码简体中文。GBK是GB2312的扩展GB18030则更全面。Big5繁体中文编码标准。UTF-8当今事实上的国际标准。它是一种变长编码兼容ASCII同时可以表示Unicode标准中的所有字符。一个中文汉字通常占3个字节。Java内部使用UTF-16编码来表示字符串String对象。char类型在JVM中就是UTF-16编码的代码单元。这是理解所有Java字符串操作的基础。2.2 Java I/O 中的编码转换关键点乱码通常发生在数据进出JVM的边界上。Java的Reader和Writer类族字符流是负责在字节和字符之间进行转换的“翻译官”而InputStream和OutputStream字节流则对编码一无所知。关键就在于为这些“翻译官”指定正确的“词典”即字符集Charset。核心转换流程字节数组 (某种编码) - InputStream - Reader (指定解码Charset) - Java String (UTF-16) - Writer (指定编码Charset) - OutputStream - 字节数组 (某种编码)如果Reader解码时用的Charset与字节数组的实际编码不一致就会产生乱码。反之Writer编码时用的Charset若与下游系统期望的不一致也会产生乱码。一个必须牢记的经验法则在涉及编码转换的任何地方永远显式地指定Charset。依赖平台默认编码如FileReader、FileWriter或String.getBytes()的无参方法是万恶之源它会使得你的程序行为在不同操作系统Windows默认可能是GBKLinux/Mac默认是UTF-8上表现不一致。// 错误示范依赖默认编码埋下跨平台乱码的种子 FileReader reader new FileReader(data.txt); String content new String(byteArray); // 正确示范显式指定UTF-8编码 BufferedReader reader new BufferedReader( new InputStreamReader(new FileInputStream(data.txt), StandardCharsets.UTF_8) ); String content new String(byteArray, StandardCharsets.UTF_8);3. 开发环境与IDE的编码统一乱码防御战的第一道防线就是确保你的开发环境本身是“纯净”的。很多新手遇到的“为什么我代码里的中文注释是乱码”、“为什么System.out.println打印中文是乱码”这些问题根源往往就在这里。3.1 IDE项目编码全局设置以最主流的IntelliJ IDEA为例你需要检查并统一以下几处的编码设置File - Settings - Editor - File EncodingsGlobal Encoding全局编码设置为UTF-8。Project Encoding项目编码设置为UTF-8。Default encoding for properties files属性文件默认编码同样设置为UTF-8并勾选“Transparent native-to-ascii conversion”。这个选项至关重要它会把属性文件中的非ASCII字符如中文自动转换为\uXXXX形式的Unicode转义序列确保在任何环境下都能正确读取。这是解决.properties文件或Spring Boot的application.yml中中文乱码的黄金法则。运行/调试配置在运行配置的“VM options”中可以添加-Dfile.encodingUTF-8来强制JVM使用UTF-8作为默认文件编码。但请注意这只是一个辅助手段核心还是依赖显式指定。实操心得对于团队项目务必将.idea/encodings.xml文件IDEA或相应的编码配置文件纳入版本控制如.gitignore中不忽略此文件或者更推荐在项目根目录下建立editorconfig文件来统一规范确保所有团队成员打开项目时的基础编码环境一致。3.2 终端与控制台编码当你通过IDE或命令行运行Java程序时控制台输出的编码取决于终端的编码设置。Windows CMD/PowerShell默认编码是GBK。如果你用UTF-8编码打印中文就会显示乱码。解决方案有两种一是将程序输出编码改为GBK不推荐不利于统一二是修改终端编码为UTF-8。在CMD中可以使用chcp 65001命令临时切换到UTF-8代码页但可能伴有字体显示问题。更推荐使用现代终端如Windows Terminal并将其默认配置文件编码设置为UTF-8。Linux/Mac Terminal通常默认就是UTF-8问题较少。可通过echo $LANG命令检查确保其包含UTF-8。一个实用的调试技巧当控制台输出乱码时不要急于修改代码。先写一个简单的测试输出一段已知编码的字符串并打印出其字节数组来确认乱码发生在哪个环节。String test 中文; System.out.println(String: test); System.out.println(Bytes in UTF-8: Arrays.toString(test.getBytes(StandardCharsets.UTF_8))); System.out.println(Bytes in GBK: Arrays.toString(test.getBytes(GBK))); // 比较控制台实际显示的乱码字符反推其错误的解码方式。4. Web应用中的全方位编码配置Web应用是乱码的重灾区因为数据流经的环节多浏览器、HTTP请求/响应、应用服务器、Servlet容器、框架Spring MVC、模板引擎、数据库。4.1 Servlet容器与HTTP过滤器HTTP协议中字符编码主要通过Content-Type头部的charset属性来指定。如果缺失或错误浏览器就会猜测编码导致乱码。解决方案配置一个全局的字符编码过滤器CharacterEncodingFilter。在Spring Boot中这变得非常简单Configuration public class WebConfig implements WebMvcConfigurer { Bean public FilterRegistrationBeanCharacterEncodingFilter characterEncodingFilter() { FilterRegistrationBeanCharacterEncodingFilter filterRegBean new FilterRegistrationBean(); CharacterEncodingFilter filter new CharacterEncodingFilter(); filter.setEncoding(UTF-8); filter.setForceEncoding(true); // 强制请求和响应都使用UTF-8 filterRegBean.setFilter(filter); filterRegBean.addUrlPatterns(/*); return filterRegBean; } }setForceEncoding(true)是关键它会覆盖客户端可能发送的错误编码声明强制统一为UTF-8。对于Tomcat你还可以在server.xml的Connector配置中添加URIEncodingUTF-8来解决GET请求参数URL中的中文乱码问题。4.2 Spring MVC的编码处理Spring MVC通过一系列HttpMessageConverter来处理请求和响应体的转换。确保你的配置支持UTF-8# application.yml spring: http: encoding: charset: UTF-8 enabled: true force: true mvc: hiddenmethod: filter: enabled: true对于ResponseBody或RestController返回JSON的场景Spring Boot默认使用的Jackson库会正确地将Java对象UTF-16 String序列化为UTF-8编码的JSON字节流。通常无需额外配置。4.3 模板引擎Thymeleaf, FreeMarker, JSP配置Thymeleaf在application.yml中配置spring: thymeleaf: encoding: UTF-8 servlet: content-type: text/htmlFreeMarker配置freemarker.properties或通过Java Config设置default_encodingUTF-8 output_encodingUTF-8 url_escaping_charsetUTF-8JSP在页面顶部添加指令% page contentTypetext/html;charsetUTF-8 languagejava pageEncodingUTF-8%。同时在web.xml中配置JSP的编码过滤器。4.4 数据库连接与交互这是另一个核心战场。必须保证连接数据库时指定的编码、数据库本身的编码、表/字段的编码三者统一通常都设置为UTF-8或其超集如utf8mb4支持更完整的Unicode包括表情符号。以MySQL为例数据库服务器配置在my.cnf或my.ini中设置[client] default-character-set utf8mb4 [mysql] default-character-set utf8mb4 [mysqld] character-set-server utf8mb4 collation-server utf8mb4_unicode_ciJDBC连接字符串在Java应用的数据库连接URL中必须显式指定字符集。# application.properties spring.datasource.urljdbc:mysql://localhost:3306/your_db?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai注意这里的characterEncodingutf8对应的是JDBC驱动层面的设置它告诉驱动用UTF-8来编码/解码与数据库交换的字符串。useUnicodetrue是启用Unicode支持。对于高版本驱动和MySQL更推荐使用utf8mb4但JDBC参数通常写utf8即可前提是数据库服务器端也是utf8mb4。踩坑实录曾经遇到一个诡异的问题从数据库读出的中文在日志里显示正常但通过API返回给前端就变乱码。排查了半天发现是某个中间件一个老旧的报表生成服务在获取数据库连接后执行了一条SET NAMES latin1的SQL覆盖了连接级别的编码设置。因此对于不受控的中间件或ORM框架的某些高级配置一定要保持警惕。5. 文件处理与网络通信中的编码实践5.1 读写文本文件原则就是“显式指定编码”无论读还是写。// 读取文件显式指定UTF-8 Path filePath Paths.get(data.txt); ListString lines Files.readAllLines(filePath, StandardCharsets.UTF_8); // 写入文件显式指定UTF-8 try (BufferedWriter writer Files.newBufferedWriter(filePath, StandardCharsets.UTF_8)) { writer.write(这是中文内容); } // 使用Apache Commons IO等工具库也要注意编码参数 String content FileUtils.readFileToString(new File(data.txt), StandardCharsets.UTF_8);对于CSV、Excel等结构化文件使用专门的库如Apache Commons CSV, OpenCSV, POI时也要在创建Reader/Writer时传入Charset参数。5.2 网络通信HTTP Client, Socket, RPC使用HTTP客户端如HttpClient、RestTemplate、WebClient时需要关注请求和响应体的编码。发送请求如果请求体是字符串确保其按正确的编码转换为字节。通常库会处理但自定义RequestBody时需注意。接收响应从ResponseEntity或响应体中获取字符串时库通常会根据HTTP头部的Content-Type中的charset来解码。如果服务器没有返回正确的charset你可能需要手动指定。// 使用Spring RestTemplate设置StringHttpMessageConverter的默认编码 RestTemplate restTemplate new RestTemplate(); restTemplate.getMessageConverters() .stream() .filter(converter - converter instanceof StringHttpMessageConverter) .forEach(converter - ((StringHttpMessageConverter) converter).setDefaultCharset(StandardCharsets.UTF_8));对于基于TCP Socket的原始通信双方必须约定好编码协议并在读写时使用InputStreamReader和OutputStreamWriter并指定相同的Charset。6. 疑难杂症排查与工具使用即使配置了所有“标准答案”现实世界依然会给你出难题。以下是一些高级排查思路和工具。6.1 乱码诊断四步法当乱码出现时不要慌按以下步骤排查定位发生环节是数据库存储乱、日志输出乱、控制台乱、前端页面乱还是API响应乱精确锁定问题边界。检查数据流向沿着数据流如浏览器输入 - HTTP请求 - 过滤器 - Controller - Service - DAO - 数据库在每个环节打印或记录数据的字节数组Hex形式和对应的字符串。对比相邻环节看在哪一步字节序列被错误地解释。确认编码声明检查每个环节的编码设置或声明是否明确、一致。包括HTTP头、JDBC连接串、文件读写参数、IDE设置、终端编码。隔离与测试构造一个最小可复现例子排除其他模块干扰。例如单独写一个测试类用同样的方式读写文件或访问数据库看问题是否复现。6.2 实用工具与命令在线编码转换/检测工具遇到一串乱码字符可以粘贴到一些在线工具尝试用不同编码解码看哪种能还原出正确文字从而反推原始编码。十六进制查看器用hexdump -C file.txtLinux/Mac或使用Notepad的“插件”-“Converter”-“HEX-ASCII”查看文件原始字节。一个UTF-8编码的中文字符其字节通常以0xE开头。而GBK编码的中文字节两个字节都在0xA1-0xFE范围内。Java调试使用String的getBytes(Charset)和new String(byte[], Charset)方法在代码中主动进行编码转换实验是理解问题最直接的方式。数据库检查命令-- MySQL 查看数据库、表、字段的编码 SHOW CREATE DATABASE your_db; SHOW CREATE TABLE your_table; SHOW FULL COLUMNS FROM your_table; -- 查看当前连接编码 SHOW VARIABLES LIKE character_set%; SHOW VARIABLES LIKE collation%;6.3 典型疑难场景解析场景一从第三方系统接收的数据乱码对方声称是UTF-8但实际可能是GBK。处理这种“不诚信”的数据源需要做编码探测。可以使用类似juniversalchardetMozilla编码检测库的Java移植这样的库来猜测字节流的可能编码但这不是100%准确。最可靠的方式是强制与对方约定并确认编码或者在接口协议中明确说明。场景二Linux服务器上文件内容乱码但本地Windows正常这几乎肯定是由于文件在WindowsGBK编码上创建然后上传到Linux服务器而服务器上的Java程序用默认或UTF-8编码去读取导致的。解决方案要么在服务器上用iconv命令转换文件编码要么在Java程序中用GBK编码读取该文件再转换为UTF-8处理。场景三使用System.out.println打印日志到文件时乱码如果你通过命令行重定向输出如java -jar app.jar log.txt那么日志文件的编码取决于终端的默认编码和JVM的file.encoding。更可靠的做法是使用日志框架Logback, Log4j2并在其配置文件中为FileAppender显式指定charsetUTF-8/charset。场景四JSON序列化/反序列化中的乱码使用Jackson时确保ObjectMapper的配置ObjectMapper mapper new ObjectMapper(); mapper.configure(JsonGenerator.Feature.ESCAPE_NON_ASCII, false); // 可选是否转义非ASCII字符 // 关键设置源码和输出的编码 mapper.setDateFormat(new SimpleDateFormat(yyyy-MM-dd HH:mm:ss)); // 通常不需要显式设置因为Jackson默认使用UTF-8写JSON。如果前端接收到的JSON中中文是\uXXXX格式这不是乱码这是正确的Unicode转义。前端JavaScript的JSON.parse()能正确解析。如果前端希望看到原生中文字符可以配置Jackson不转义非ASCII字符如上配置但需确保HTTP响应头是Content-Type: application/json;charsetUTF-8。7. 构建编码安全的开发规范与习惯最后将“编码安全”内化为团队规范和开发习惯是杜绝乱码的治本之策。项目公约在项目README或开发规范中明确规定本项目所有环节源码、配置文件、数据库、HTTP通信、文件交换强制使用UTF-8编码。代码审查将“是否显式指定Charset”作为代码审查的一项要点。警惕任何使用默认编码的API调用。环境标准化使用Docker容器或统一的开发环境配置脚本确保所有开发、测试、生产环境的基础编码设置一致。依赖库检查引入第三方库时关注其文档中关于编码的部分了解其默认行为必要时进行封装或配置。测试用例为涉及IO、网络、数据库的核心服务编写包含中文字符尤其是边界用例如生僻字、emoji的单元测试和集成测试确保编码转换的正确性。乱码问题本质上是一个“一致性”问题。当你从系统思维的角度将UTF-8作为贯穿整个数据生命周期的唯一标尺并在每一个数据跨边界流动的环节都小心翼翼地显式指定这把标尺时乱码这个“幽灵”自然就无处遁形了。这个过程没有银弹有的只是对细节的执着和对原理的透彻理解。希望这篇汇集了多年踩坑经验的长文能真正成为各位Java同行的“福音”让大家能把更多时间花在创造业务价值上而不是在深夜与一堆问号方块搏斗。

相关新闻

从模糊到锐利:用Magpie窗口超分辨率,把老游戏和旧窗口一眼看清楚

从模糊到锐利:用Magpie窗口超分辨率,把老游戏和旧窗口一眼看清楚

从模糊到锐利:用Magpie窗口超分辨率,把老游戏和旧窗口一眼看清楚 【免费下载链接】Magpie A general-purpose window upscaler for Windows 10/11. 项目地址: https://gitcode.com/gh_mirrors/mag/Magpie 晚上十一点,阿哲翻出十年前的…

2026/10/17 11:37:12 阅读更多 →
二分查找右侧边界:从循环不变量到无BUG实现的深度解析

二分查找右侧边界:从循环不变量到无BUG实现的深度解析

1. 项目概述&#xff1a;为什么“右侧边界”是二分查找的进阶关键二分查找&#xff0c;一个在算法世界里被反复提及的经典。但凡学过编程&#xff0c;谁都能说出“有序数组、折半查找”这几个字。但如果你认为二分查找就是while (left < right)然后mid (left right) / 2这…

2026/10/17 8:36:59 阅读更多 →
Windows蓝牙耳机连接失败:从驱动到硬件的全方位排查与修复指南

Windows蓝牙耳机连接失败:从驱动到硬件的全方位排查与修复指南

1. 问题概述&#xff1a;为什么Windows连接蓝牙耳机总“掉链子”&#xff1f; 蓝牙耳机连接Windows电脑失败&#xff0c;这绝对是个能让人血压飙升的体验。你满心欢喜地戴上新耳机&#xff0c;准备沉浸在工作或音乐中&#xff0c;结果系统要么压根找不到设备&#xff0c;要么在…

2026/10/16 8:44:10 阅读更多 →

最新新闻

相关系数与决定系数:别再混淆,一文讲透模型评估核心指标

相关系数与决定系数:别再混淆,一文讲透模型评估核心指标

1. 从一个让人困惑的结论说起&#xff1a;相关系数高&#xff0c;模型就一定准吗很多人第一次接触统计建模时&#xff0c;都会经历这样一个场景&#xff1a;辛辛苦苦跑完一组数据&#xff0c;软件输出一个相关系数0.85&#xff0c;心里一阵激动&#xff0c;觉得变量之间的关系已…

2026/10/17 11:36:30 阅读更多 →
Agent编排实战:从单Agent瓶颈到多Agent协作的工程化指南

Agent编排实战:从单Agent瓶颈到多Agent协作的工程化指南

这两年做大模型应用&#xff0c;我越来越觉得&#xff0c;单Agent已经不太够用了。早期的时候&#xff0c;一个Agent塞一个超长Prompt&#xff0c;让它一口气完成“收集资料-分析-写报告-校对-排版”&#xff0c;结果经常是前面步骤一错&#xff0c;后面全崩&#xff0c;而且跑…

2026/10/17 11:36:30 阅读更多 →
Tableau合成桑吉图的底层逻辑与三大支柱字段构建

Tableau合成桑吉图的底层逻辑与三大支柱字段构建

1. 桑吉图不是“画出来的”&#xff0c;而是“搭出来的”——Tableau里最常被误解的可视化逻辑很多人第一次在Tableau里尝试做桑吉图&#xff08;Sankey Diagram&#xff09;&#xff0c;都会下意识打开“标记”面板&#xff0c;拖入维度、度量&#xff0c;选中“线”或“路径”…

2026/10/17 11:36:30 阅读更多 →
自动驾驶感知中的PCA与LDA:安全驱动的维度约简实战指南

自动驾驶感知中的PCA与LDA:安全驱动的维度约简实战指南

1. 为什么在自动驾驶感知系统里&#xff0c;PCA和LDA不是“选修课”&#xff0c;而是必过门槛&#xff1f;你刚接手一个车载多传感器融合项目&#xff0c;激光雷达点云原始维度是20486&#xff08;x/y/z/intensity/ring/timestamp&#xff09;&#xff0c;摄像头输出的ResNet-5…

2026/10/17 11:36:30 阅读更多 →
FastICA原理与sklearn实战:从盲源分离到工程落地

FastICA原理与sklearn实战:从盲源分离到工程落地

1. 这不是调个包那么简单&#xff1a;FastICA在sklearn里到底在解决什么问题你打开sklearn文档&#xff0c;看到sklearn.decomposition.FastICA这个类&#xff0c;第一反应可能是&#xff1a;“哦&#xff0c;独立成分分析&#xff0c;和PCA差不多吧&#xff1f;填个n_componen…

2026/10/17 11:36:30 阅读更多 →
外卖霸王餐小程序源码实战:CPS返利系统从部署到二次开发

外卖霸王餐小程序源码实战:CPS返利系统从部署到二次开发

简介&#xff1a;这份资源是面向本地外卖商家与小程序开发者的霸王餐系统源码&#xff0c;围绕美团、饿了么等主流外卖场景&#xff0c;提供商家入驻、霸王餐发布、优惠券设置与用户评价反馈等核心模块&#xff0c;帮助商家以免费体验活动吸引新客、沉淀口碑&#xff0c;也为想…

2026/10/17 11:35:29 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介&#xff1a;《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南&#xff0c;重点围绕V3与R1两款模型的能力差异与适用场景展开&#xff0c;帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件&#xff0c;压缩包大小约311KB&#xff0c;篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介&#xff1a;这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档&#xff0c;共收录两百余条可直接套用的润色指令&#xff0c;涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度&#xff0c;并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介&#xff1a;本资源是一份基于OpenCV的本科课程设计完整报告&#xff0c;面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生&#xff0c;解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →