You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将pokémon转换为pokémon?HTML实体解码求助

解决HTML实体转普通字符的问题

你遇到的是HTML字符实体解码的问题,é是é的十进制HTML实体,和页面编码、Unicode规范化工具(比如Normalizer)无关,下面分场景给你可行的解决方法:

前端JavaScript处理

直接利用浏览器的DOM解析能力来解码最稳妥,不用自己写正则处理各种实体:

// 方法1:用textarea元素解析
function decodeHtml(str) {
  const textArea = document.createElement('textarea');
  textArea.innerHTML = str;
  return textArea.value;
}

// 调用示例
const encoded = 'pokémon';
const decoded = decodeHtml(encoded);
console.log(decoded); // 输出 pokémon

或者用DOMParser:

const encoded = 'pokémon';
const doc = new DOMParser().parseFromString(`<span>${encoded}</span>`, 'text/html');
const decoded = doc.querySelector('span').textContent;

后端Java处理(你提到了Normalizer,推测用Java)

Normalizer不负责HTML实体解码,得用专门的工具:

方案1:Apache Commons Text库(推荐)

引入依赖后直接调用工具类:

import org.apache.commons.text.StringEscapeUtils;

public class EntityDecodeDemo {
    public static void main(String[] args) {
        String encodedStr = "pok&#233;mon";
        String decodedStr = StringEscapeUtils.unescapeHtml4(encodedStr);
        System.out.println(decodedStr); // 输出 pokémon
    }
}

方案2:用Java内置类(无需第三方库)

借助HTMLEditorKit来解析:

import javax.swing.text.html.HTMLEditorKit;
import java.io.StringReader;
import java.io.StringWriter;

public class BuiltInDecoder {
    public static String decodeHtml(String encoded) throws Exception {
        StringWriter writer = new StringWriter();
        new HTMLEditorKit().read(new StringReader(encoded), new javax.swing.text.DefaultStyledDocument(), 0);
        return writer.toString();
    }

    public static void main(String[] args) throws Exception {
        System.out.println(decodeHtml("pok&#233;mon")); // 输出 pokémon
    }
}

为什么之前的方法无效?

  • 页面meta设置UTF-8是指定页面的字符编码,而你遇到的是HTML实体转义问题,不是编码不匹配,所以meta解决不了。
  • Normalizer是用来处理Unicode字符的规范化(比如合并组合字符),和HTML实体解码完全是两码事,所以用它没用。

内容的提问来源于stack exchange,提问作者Barış Babahan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 14:15:22