HTML 实体编码 &#039

举报
福州司马懿 发表于 2025/09/21 23:15:09 2025/09/21
【摘要】 &#039 是 HTML 实体编码,表示 单引号(')。它通常出现在以下场景: 1. 为什么会出现 &#039?HTML 转义:当单引号在 HTML 属性或文本中被转义时,会变成 &#039(防止 XSS 攻击或解析错误)。<!-- 原始文本 --><div title="It's a test">示例</div><!-- 转义后(可能由框架或安全策略自动处理) --><div title=...

&#039 是 HTML 实体编码,表示 单引号(')。它通常出现在以下场景:


1. 为什么会出现 &#039

  • HTML 转义:当单引号在 HTML 属性或文本中被转义时,会变成 &#039(防止 XSS 攻击或解析错误)。

    <!-- 原始文本 -->
    <div title="It's a test">示例</div>
    
    <!-- 转义后(可能由框架或安全策略自动处理) -->
    <div title="It&#039;s a test">示例</div>
    
  • 数据库或代码生成:某些系统(如 Java、PHP)在输出到 HTML 时会自动转义特殊字符。


2. 如何处理 &#039

(1)在前端显示为正常单引号

  • HTML 自动解析:浏览器会自动将 &#039 渲染为 ',无需额外处理。
  • 手动替换(JavaScript)
    const text = "It&#039;s a test";
    const decodedText = text.replace(/&#039;/g, "'");
    console.log(decodedText); // 输出: It's a test
    

(2)在代码中避免转义问题

  • 后端处理

    • Java(Spring):使用 @ResponseBodyThymeleafth:utext 禁用转义。
    • PHP:用 htmlspecialchars_decode() 反转义:
      $text = "It&#039;s a test";
      echo htmlspecialchars_decode($text); // 输出: It's a test
      
  • 前端框架

    • React/Vue:使用 dangerouslySetInnerHTMLv-html(需谨慎防止 XSS)。
      // React 示例(不推荐,仅演示)
      function Component() {
        const text = "It&#039;s a test";
        return <div dangerouslySetInnerHTML={{ __html: text.replace(/&#039;/g, "'") }} />;
      }
      

3. 常见相关实体编码

编码 字符 用途
&#039 ' 单引号
&quot " 双引号
&amp & 防止与 HTML 实体冲突
&lt < 小于号
&gt > 大于号

4. 最佳实践

  • 统一转义策略:前后端约定是否转义,避免双重转义(如 &#039; 被再次转义为 &amp;#039;)。
  • 安全防护:直接输出用户输入时,始终转义(如 &&amp;),防止 XSS 攻击。
  • 调试技巧:用浏览器开发者工具检查最终渲染的 DOM,确认字符是否正确显示。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。