尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
EL表达式从Cookie取中文乱码?根源、解码方案与排查清单
EL 表达式从 Cookie 里取中文值出现乱码是 JSP 老项目里特别经典的问题页面上一会儿是%E5%BC%A0%E4%B8%89一会儿是??偶尔还是一排诡异字符。这个问题我前前后后遇过不下五次每次复现原因都不完全一样但排错思路是同一套。这篇就把 Cookie 中文乱码彻底聊透从协议层为什么不让 Cookie 存中文到 EL 表达式为什么拿到的是“半成品”再到四种能直接落地的解码方案最后附一份我实际排错用的检查清单。如果你正在维护 JSP 项目或者刚刚把 scriptlet 改成 EL又或者被问到“Cookie 里能不能直接放中文”这篇都值得花十分钟读完。看完全文你会明白这问题不是玄学每一步都有确定的原理也都有确定的解法。1. 先分清三种乱码表现形式不同病因完全不同把乱码问题一概而论是最容易走弯路的。同样是“页面显示不正常”三种表现背后的链路断点完全不同。我建议遇到问题先截图对照下面的分析做初步判断再决定改哪一行代码。1.1 最常见的现场一股熟悉的 % 编码味道先还原一下场景。登录成功之后后端往浏览器写了一个 Cookie存的是用户名“张三”。JSP 页面要显示当前登录人很自然地写了这么一行当前用户${cookie.username.value}浏览器刷新之后页面上出现的不是“张三”而是一长串%E5%BC%A0%E4%B8%89。我把这个现象叫“好的乱码”——它丑但它没丢信息。%E5%BC%A0%E4%B8%89正是“张三”两个字的 UTF-8 字节序列经过百分号编码之后的样子字节一个都没少链路是通的只是最后一步没有做反向解码。这种问题一般在从 scriptlet 改用 EL 之后最容易撞见以前用% request.getCookies() %那套写法的时候顺手调了 URLDecoder换成${cookie.username.value}之后忘了这件事于是编码串被原样输出。1.2 乱码对照表看懂三种表现的幕后真相比 % 串更让人头疼的是??和æå¼ 三这类形态。我把三者放在一张表里方便对照定位页面表现真实含义最可能的病因%E5%BC%A0%E4%B8%89UTF-8 字节被百分号编码信息完整写入端编码了读取端没解码???或??非 ASCII 字节被替换成问号原始字节已丢失写入时直接放中文容器或浏览器按单字节字符集丢弃高位字节æå¼ 三一类怪字符UTF-8 原始字节被按 ISO-8859-1 解码后展示写入端没编码读取端字符集又不一致属于可抢救状态??是最麻烦的因为问号意味着字节在某一环被直接丢弃不是补一个解码就能救回来必须回到写入端重新处理。æå¼ 三这类看着怪实际上还能用new String(value.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8)这种老偏方救回来但我不建议依赖它原因后面专门有一节讲。所以遇到乱码的第一步不是改代码而是先判断属于哪一种。判断方法也很简单把页面上的乱码复制出来如果能认出%XX这种结构就是缺解码如果是 KB 级别的替换符就是字节丢了如果是一串像欧洲语言一样的乱码大概率是 ISO-8859-1 与 UTF-8 的错位。2. 为什么 Cookie 不能直接放中文这一节讲原理不想看可以跳到第 3 节但建议还是看一眼因为后面所有解决方案都是从这两个底层约束推出来的。2.1 Cookie 协议只给 ASCII 开门Cookie 的本质是 HTTP 头里的一对namevalue文本。HTTP 头的历史包袱很重最早根本没有字符集协商机制实际操作上用的是 ISO-8859-1也就是 Latin-1这套单字节字符集。到了 RFC 6265规则更明确了cookie-value 只能是美国 ASCII 字符的一个子集分号、逗号、空格、双引号、反斜杠这些符号连当普通字符都不行因为它们承担了分隔符的功能。中文的 UTF-8 编码一个字符要 3 个字节字节值大量落在 0x80 到 0xFF 之间根本不在 ASCII 范围内。把“张三”直接丢进 Cookie会发生什么完全取决于浏览器和容器的脸色老一点的浏览器可能自动给你百分号编码新一点的容器可能直接在response.addCookie()这行就抛异常还有的浏览器干脆把这个 Cookie 整个丢掉。所以“Cookie 里能不能直接放中文”这个问题结论非常干脆不能必须先把中文转成 ASCII 安全的形式再放进去。这个转换最通用的就是 URL 编码也就是百分号编码。整个过程很像寄国际明信片地址栏只让填英文和数字你就把中文地址写成拼音贴上去收件人收到后再把拼音还原成中文地址。URL 编码就是“拼音”URLDecoder 就是把“拼音”还原成“中文”的那一步。2.2 EL 表达式的真实身份一个不负责翻译的搬运工很多人以为${cookie.username.value}是 EL 在“解析 Cookie 里的中文”这是误解。EL 里的cookie隐式对象本质是一个 Mapkey 是 Cookie 名字value 是容器解析出来的Cookie对象.value调用的就是你熟悉的Cookie.getValue()。容器从 HTTP 头里解析 Cookie 时拿到的是浏览器原样回传的字符串。如果写入端用的是 URL 编码那浏览器回传的就是%E5%BC%A0%E4%B8%89这串 ASCIIgetValue()老老实实返回这串 ASCIIEL 也老老实实输出这串 ASCII。整个过程里没有谁有义务帮你把%E5...还原成“张三”。所以回到 1.1 的场景看到%E5%BC%A0%E4%B8%89一点也不用慌这恰恰说明前面的链路是健康的只差最后一步翻译。这个认知特别重要EL 拿到的不是乱码数据而是“未解码的正确数据”。排错方向就会从“到处调字符集”变成“找到唯一的解码缺失点”。2.3 五次转折的字符集链路断一环就乱码把一次 Cookie 的存取完整展开要经过下面五个环节Java 字符串 → 写入 Cookie 前的编码处理 → HTTP 响应头传输 → 浏览器存储与回传 → 容器解析成 Cookie 对象 → EL 取值输出到页面。这五个环节里只要有一个环节的字符集口径不一致结果就是乱码。最常见的翻车组合是写入端用了 UTF-8 编码页面却用 ISO-8859-1 输出或者写入端干脆没编码后面所有环节再努力都白搭。做 Cookie 编码这件事我的原则是“全链路只认 UTF-8”从 JSP 页面声明、Servlet 里的字符串、URL 编解码到响应输出的 Content-Type全部统一成 UTF-8。统一口径比记住任何一条偏方都管用。3. 写入端与读取端的分工编码和解码必须成对现在进入正题。解决 EL 取 Cookie 中文乱码本质是补全一套“成对出现的编解码”。只改读取端、只改写入端都是治标不治本。3.1 写入端URLEncoder.encode 之后顺手处理加号写入 Cookie 的标准姿势长这样String username 张三 李四; // 假设这是从表单或数据库拿到的值 // 第一步URL 编码把中文变成 ASCII 安全形式 String encoded URLEncoder.encode(username, UTF-8); // 第二步把 替换成 %20避免不必要的兼容性问题 encoded encoded.replace(, %20); Cookie cookie new Cookie(username, encoded); cookie.setPath(/); cookie.setMaxAge(7 * 24 * 60 * 60); // 7 天 response.addCookie(cookie);第一步好理解这里重点说第二步的。URLEncoder走的是application/x-www-form-urlencoded那套规则它会把空格编码成比如“张三 李四”编码出来是%E5%BC%A0%E4%B8%89%E6%9D%8E%E5%9B%9B。问题在于在 Cookie 值里虽然合法但它和百分号编码的风格不一致你用 Java 的URLDecoder.decode解会正确还原成空格可一旦中间有 JavaScript 参与比如前端用decodeURIComponent去解不会被当成空格页面就会多出一个奇特的加号。为了不让这套逻辑依赖“解码头是谁”我习惯在 encode 之后统一把替换成%20这样不管谁来解码行为都一致。另外顺带提醒Cookie 的 name 也不能太随意。项目里很容易出现 “user.name”“login.user” 这种带点的命名EL 里直接写${cookie.user.name}会被解析成“取 cookie.user 这个对象里的 name 属性”根本拿不到值。要写成${cookie[user.name].value}才行。这是个和乱码无关、但极易和乱码同时出现的小坑。3.2 读取端URLDecoder.decode 的位置有讲究写入端编码了读取端就要对称地解码。最简单的对称写法是在 Servlet 或脚本里拿到 Cookie 值后马上还原String raw cookie.getValue(); String username URLDecoder.decode(raw, UTF-8);注意这里有个细节写入端已经把换成了%20所以URLDecoder.decode不会有任何歧义就算你忘了那步替换URLDecoder自己也能把当空格处理这也就是为什么很多人从没处理过也没出事。真正的风险点是“只编码不解码”和“只解码不编码”两种不对称前者就是你看到的 % 串后者则是写入端把中文直接丢进去、读取端一顿解结果越解越乱。3.3 配套的页面与容器编码声明一个都不能少编码解码成对之后还有一个容易被忽略的配套项页面输出编码。JSP 页面里至少要保证下面三处是 UTF-8% page pageEncodingUTF-8 % % page contentTypetext/html; charsetUTF-8 % meta charsetUTF-8pageEncoding决定 JSP 源文件本身以什么字符集编译contentType决定响应头里的 charsetmeta 标签则是给浏览器看的兜底声明。只写 contentType 不写 pageEncoding 是高频翻车点JSP 文件物理磁盘上明明是 UTF-8 字节容器却可能按平台默认编码比如 GBK去读源码源码里写死的那个“张三”还没进 Cookie 就坏了。这种问题补解码是救不回来的只能回到源头。如果项目里 POST 表单也有中文乱码再配一个全局编码过滤器会更省心WebFilter(/*) public class EncodingFilter implements Filter { Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { req.setCharacterEncoding(UTF-8); res.setCharacterEncoding(UTF-8); chain.doFilter(req, res); } }但要记住这个过滤器管的是请求体和响应体管不到 Cookie 的解码Cookie 的解码必须自己来。这也是很多新人踩过的坑——以为加了 UTF-8 过滤器Cookie 里的中文就会自动正常实际上不会。4. EL 场景下的四种解码落地姿势写入和读取的原则定好了接下来解决一个具体问题EL 表达式本身不能直接调用URLDecoder.decode那页面里怎么解下面四种方案我都在项目里用过按推荐程度排个序。4.1 方案一自定义 EL 函数最推荐EL 2.2 提供了函数机制可以像 JSTL 的${fn:length()}那样调用自己的静态方法。JSTL 自带函数里没有 URL 解码所以自己写一个一劳永逸。先写工具类package com.example.web.util; import java.net.URLDecoder; import java.io.UnsupportedEncodingException; public final class CookieFunc { private CookieFunc() {} public static String urlDecode(String value) { if (value null || value.isEmpty()) { return ; } try { return URLDecoder.decode(value, UTF-8); } catch (UnsupportedEncodingException e) { throw new IllegalStateException(UTF-8 编码在当前 JDK 中必定存在, e); } } }然后写一个 TLD 描述文件放到WEB-INF目录下文件名随意比如functions.tld?xml version1.0 encodingUTF-8? taglib xmlnshttp://xmlns.jcp.org/xml/ns/javaee xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-jsptaglibrary_2_1.xsd version2.1 tlib-version1.0/tlib-version short-namefn/short-name urihttp://example.com/web/util-functions/uri function nameurlDecode/name function-classcom.example.web.util.CookieFunc/function-class function-signature java.lang.String urlDecode(java.lang.String) /function-signature /function /taglibJSP 页面里这样用% taglib prefixfn urihttp://example.com/web/util-functions % 当前用户${fn:urlDecode(cookie.username.value)}提示TLD 里function-signature的写法有讲究返回值类型和参数类型必须写全限定名java.lang.String不要简写成String否则容器在启动阶段会直接报错。这个方案的好处是干净页面里只多了一个函数调用不掺入 scriptlet也不会把解码逻辑散落在各个 Servlet。4.2 方案二在 Servlet 层解码EL 只读结果如果你的项目已经有清晰的 MVC 分层JSP 只负责展示那更推荐在 Controller 或 Servlet 里把所有 Cookie 解析完把解码后的值放到 request 属性里public void getUserFromCookie(HttpServletRequest request) { String username null; Cookie[] cookies request.getCookies(); if (cookies ! null) { for (Cookie c : cookies) { if (username.equals(c.getName())) { username URLDecoder.decode(c.getValue(), UTF-8); break; } } } request.setAttribute(loginUser, username); }JSP 里就是纯粹的显示当前用户${loginUser}这个方案把编解码逻辑全部收敛在 Java 层便于单元测试也便于以后重构。它唯一的代价是 JSP 和 Cookie 细节彻底解耦适合页面多、又不希望每个页面都关心 Cookie 结构的项目。4.3 方案三Scriptlet 兜底救急但不推荐老项目里偶尔改一两个页面不想动 TLD直接上 scriptlet 也能快速解决% String username ; Cookie[] cookies request.getCookies(); if (cookies ! null) { for (Cookie c : cookies) { if (username.equals(c.getName())) { username URLDecoder.decode(c.getValue(), UTF-8); } } } % 当前用户% username %能用但我强烈不建议当成长期方案。scriptlet 一旦增多页面维护成本迅速上升而且这种散装代码很快会在不同页面里出现各种复制粘贴的变体今天改了这页忘了那页。它适合“生产环境正在报障、先恢复再说”的场景救完火还是得回到方案一或方案二。4.4 方案四Base64 替代 URL 编码如果项目里 Cookie 值本身包含各种特殊字符或者你对百分号编码这套链路实在不放心还有一种 ASCII 化思路Base64。String username 张三?:,;; String encoded Base64.getUrlEncoder().withoutPadding() .encodeToString(username.getBytes(UTF-8)); Cookie cookie new Cookie(username, encoded); response.addCookie(cookie);读取端对应解码byte[] data Base64.getUrlDecoder().decode(raw); String username new String(data, UTF-8);Base64 的getUrlEncoder()会自动把和/替换成-和_避免落进 Cookie 值里引发歧义。它的优点是输出字符集非常干净不涉及百分号编码的兼容性讨论缺点是体积膨胀约 33%Cookie 总大小有 4KB 左右的硬限制值太长会直接被浏览器拒绝。所以我一般只在值本身短、又包含大量特殊字符的场景用正常情况下还是 URL 编码为主。5. 实操复盘一个完整可运行的最小示例说了这么多直接给一个能跑通的最小项目。环境是 JDK 8 和任意主流 Servlet 容器不需要额外依赖。5.1 项目结构与环境准备webapp/ ├── WEB-INF/ │ ├── functions.tld │ └── web.xml 纯注解项目可以省略 web.xml ├── login.jsp ├── home.jsp └── src/main/java/ └── com/example/web/ ├── LoginServlet.java └── util/CookieFunc.java为了把“写入端编码、读取端解码、EL 展示”三个点都覆盖到我让登录页表单 POST 到LoginServletServlet 把用户名写进 Cookie重定向到home.jsp由home.jsp用自定义 EL 函数读取并解码展示。5.2 写入端 Servlet 关键代码与参数说明package com.example.web; import java.io.IOException; import java.net.URLEncoder; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; WebServlet(/login) public class LoginServlet extends HttpServlet { Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { request.setCharacterEncoding(UTF-8); String username request.getParameter(username); // 例如张三 String encoded URLEncoder.encode(username, UTF-8) .replace(, %20); Cookie cookie new Cookie(username, encoded); cookie.setPath(/); cookie.setMaxAge(7 * 24 * 60 * 60); response.addCookie(cookie); response.sendRedirect(request.getContextPath() /home.jsp); } }这里有一个细节容易忽略request.setCharacterEncoding(UTF-8)必须放在第一次getParameter之前调用否则对本次请求体解码不生效。虽然它管不到 Cookie但能保证你从表单里拿到的“张三”一开始就是对的。5.3 读取端工具类、TLD 文件与 JSP 页面工具类就是 4.1 里的CookieFunc这里不重复贴。TLD 文件放WEB-INF/functions.tld内容同 4.1。有一点要重点提醒TLD 文件必须放在WEB-INF下如果你图省事放到了 webapp 根目录容器会把它当普通静态资源下发taglib 引用永远找不到。login.jsp 是普通表单这里跳过。home.jsp 的核心是这段% page pageEncodingUTF-8 contentTypetext/html; charsetUTF-8 % % taglib prefixfn urihttp://example.com/web/util-functions % !DOCTYPE html html head meta charsetUTF-8 title首页/title /head body 当前用户${fn:urlDecode(cookie.username.value)} /body /html5.4 用 curl 验证整条链路是否通启动项目后用 curl 模拟一次登录重点看响应头里的 Set-Cookiecurl -i -X POST http://localhost:8080/demo/login \ -d username张三 \ -H Content-Type: application/x-www-form-urlencoded; charsetUTF-8响应头里应该是Set-Cookie: username%E5%BC%A0%E4%B8%89; ...这样的 ASCII 串这就是写入端编码生效的直接证据。再用带 Cookie 的请求访问 home.jspcurl -i http://localhost:8080/demo/home.jsp \ -H Cookie: username%E5%BC%A0%E4%B8%89页面正文里如果出现“当前用户张三”整条链路就通了。我建议团队里第一次接这个活的人先跑通这个最小示例再往真实项目里迁移比直接改业务代码稳得多。6. 排错实录高频坑、老偏方与一套排查流程最后一部分把我在实际项目里反复遇到的坑和排查思路列出来。6.1 三个一踩一个准的坑第一个坑只写了 contentType 没写 pageEncoding。症状是页面输出编码看着是 UTF-8但源码里写死的中文在编译阶段就坏了。修法很简单补上% page pageEncodingUTF-8 %而且它必须出现在 JSP 文件靠前的位置才生效。第二个坑Cookie 写入和读取的编解码函数不是一对。要么写入用URLEncoder、读取却用了自定义的replace(%, )之类的野逻辑要么前端用encodeURIComponent写 Cookie后端却用别的逻辑处理。其实 Java 的URLDecoder和 JavaScript 的encodeURIComponent是兼容的空格都是%20真正不兼容的是 Java 的URLEncoder空格是和 JavaScript 的decodeURIComponent不会被还原成空格。记住这个错位关系很多前后端混合项目的问题当场就能定位。第三个坑把response.setCharacterEncoding(UTF-8)写在了getWriter()之后。响应字符集一旦被getWriter()锁定之后再设置就不再生效。Cookie 值没变页面输出却是乱码很容易被误判成 Cookie 的问题。6.2 两个“老偏方”为什么现在别用了网上老代码里流传着一个经典姿势String name new String(cookie.getValue().getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);这个写法的历史背景是老容器把 HTTP 头按 ISO-8859-1 解码所以 UTF-8 原文塞进 Cookie 后getValue()返回的是“被误解码”的字符串把它的字节按 ISO-8859-1 取出来再按 UTF-8 读一遍就能还原出原文。听起来很妙但它成立的前提是容器确实按 ISO-8859-1 解析了 Cookie而且写入端的字节就是干净的 UTF-8。在新版容器里Cookie 解析规则已经变了有的容器在写入端就拦截非 ASCII有的容器读取时直接按 UTF-8 处理这个偏方遇到不同的组合就会从“救命稻草”变成“二次伤害”。我的结论是老项目里历史代码可以保留新代码一律走 URL 编解码别再把字节编码当魔法用了。再说一个容易混淆的点request.setCharacterEncoding(UTF-8)管的是请求体对request.getCookies()没有任何作用。Cookie 的字符集在协议层面就是 ASCII不存在“把容器设置成 UTF-8 就能直接读中文 Cookie”的开关。另外有些容器在连接器上提供了 URI 编码配置那也只影响 GET 的 URI 与查询字符串和 Cookie 解码是两码事。6.3 我排查 Cookie 乱码的“三看”流程遇到 Cookie 中文乱码我不急着改代码按下面三步走基本十分钟内能定位。第一看写入端。全局搜new Cookie(看有没有在 addCookie 前显式编码。没有编码后面全都不用看了先补 encode。第二看响应头。用浏览器开发者工具或者 curl看 Set-Cookie 的实际值。如果是%E5...这种纯 ASCII链路是健康的如果响应头里直接出现非 ASCII 字节那写入端就没编好。第三看页面渲染。在确认 Cookie 值是 ASCII 的前提下剩下的问题基本在页面输出环节JSP pageEncoding、contentType、meta 三处是否一致。用 curl 访问页面看响应头里的Content-Type: text/html; charsetUTF-8是否真的带上了 UTF-8。三步走完问题基本就会被压缩到某一环剩下的就是照着第 4 节选一个解码方案落地。最后再分享一个个人的小习惯项目里凡是涉及 Cookie 中文的工具方法我都要求写单元测试时把“中文、空格、逗号、冒号、emoji”这五类字符全测一遍。因为 URL 编码的大多数坑都集中在特殊字符和空格上把这五类字符的编解码往返测绿了线上事就少一大半。Cookie 存中文本身不是好设计理想状态下 Cookie 里只放会话 ID业务数据都放后端会话里但在老项目改造完成之前把这一套编解码做规范能让后续接手的人少掉不少头发。
RELATED

相关推荐

Python模拟登录教务系统全流程:从抓包到成绩查询

Python模拟登录教务系统全流程:从抓包到成绩查询

搞自动化的人都知道,学校里的教务系统是最让人又爱又恨的东西。爱的是所有课程、成绩、选课都在上面,恨的是它几乎没有一个开放API,所有操作都得在浏览器里手动点,就连查个平时分也要输入学号、密码、验证码,再点三次确…

📅 2026/10/12 14:59:17
Claude-Mem项目解析:本地对话记忆持久化技术探析

Claude-Mem项目解析:本地对话记忆持久化技术探析

项目标题是“claude-mem”,但当前输入中未提供任何有效正文、关键词列表或摘要描述——整段输入为空,仅有一个孤立的标题字符串和空的代码块。根据我的角色设定与创作原则,我必须严格忠于原料:所有内容必须源于用户提供的【项目标…

📅 2026/10/12 14:54:15
在线m3u8视频提取下载工具全解析:从HLS分片到MP4转换的实现与避坑指南

在线m3u8视频提取下载工具全解析:从HLS分片到MP4转换的实现与避坑指南

简介:一个在线m3u8视频提取下载工具,基于HLS协议实现,无需安装即可在浏览器中处理分段流媒体。它面向普通用户与前端开发者,解决m3u8列表解析、切片下载及转存MP4格式等问题,适用于离线观看、素材收藏等场景。压缩包共…

📅 2026/10/12 14:54:15
MORE NEWS

更多资讯

📰

实验-数据结构程序.7z 拆包实战:从编译到单元测试的完整指南

简介:这份「实验-数据结构程序」压缩包面向计算机专业学生与算法初学者,聚焦排序、查找及链式数据结构的上机实践,帮助读者通过可编译运行的代码加深对核心概念的理解。包内共61个文件,以32个cpp源文件、13个h头文件和16张jpg参考…

📰

信任感破裂后如何重建与修复?亲密关系疗愈完整指南

伴侣间的信任感被破坏后,如何重建与修复?这个标题自带重量。我在情感咨询和陪伴身边朋友处理关系危机的时候,最常听到的一句话就是:“我还能相信他吗?就算和好了,我心里那根刺也拔不掉。”说实话&#xff0…

📰

安全隔离与信息交换系统Web安装使用手册V3:配置、避坑与进阶技巧

简介:天融信安全隔离与信息交换系统V3版Web界面安装使用手册,面向网络安全运维人员、系统集成工程师及负责内外网隔离部署的技术人员,用于指导设备的安装、配置与日常管理。该系统由天融信自主研发,通过专用非TCP/IP协议在网络间进…

📰

postgresql 游标(cursor)使用指南:从声明到 FETCH 的完整实践

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

📰

吉利6.4亿入股蔚来能源、车网互动定5000万千瓦:补能进入“生态战“时代

吉利以易易互联100%股权及6.4亿元现金入股蔚来能源持股30%、蔚来认购浩瀚能源10%,双方充电资源全面互联互通、共建统一C端换电标准;"十五五"规划明确车网互动聚合可调充电规模2030年达5000万千瓦;蔚来国庆加电超207万次、单日换电超…

📰

通信工程就业真相:6类技术动作+3大隐性门槛

简介:本资源是一份面向通信工程专业本科生及应届毕业生的就业指导文档,聚焦5G时代下高需求、高成长性的核心职业路径。内容系统梳理SP产品经理与电信交换工程师两大主流方向,涵盖职业定义、典型工作内容、硬性能力要求(如No.7信令…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬