网页中直接输入°c显示异常是因为“°”非ascii字符,受编码(utf-8/gbk)、编辑器、http响应头charset不一致影响,易乱码;推荐用html实体°或unicode转义\u00b0,并声明utf-8编码。

网页中直接输入°C 为什么有时显示异常
因为“°”不是 ASCII 字符,不同编辑器、文件编码(如 UTF-8 vs GBK)、HTTP 响应头 Content-Type 中的 charset 设置不一致时,浏览器可能无法正确解析你键盘敲出的 ° 符号,导致乱码或方块。即使源码看着正常,保存为 ANSI 编码再打开就可能变样。
- 推荐始终用 HTML 实体或 Unicode 转义,不依赖键盘直输
- 确保 HTML 文件声明了
<meta charset="UTF-8"> - 服务器返回的
Content-Type头最好显式包含; charset=utf-8
使用 ° 实体是最稳妥的写法
° 是 HTML 标准实体,语义明确、兼容性极好(从 IE6 到现代浏览器都支持),且不依赖文件编码。它等价于 Unicode U+00B0,渲染结果就是标准摄氏度圆圈。
示例:
<p>当前温度:25<code>°</code>C</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill9263" title="Html2md"><img src="https://img.php.cn/upload/skill/000/000/081/179249945220127.jpg" alt="Html2md" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill9263" title="Html2md" class="overflowclass">Html2md</a> <p class="overflowclass">使用 Readability + Turndown 将 HTML 页面转换为干净的、Agent 友好的 Markdown。去除导航栏、广告、页脚、Cookie 横幅、社交按钮等干扰元素。支持 URL...</p> </div> <a rel="nofollow" href="/xiazai/skill9263" title="Html2md" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>
注意:° 后面**不能加空格**,否则会多出一个空白;也不需要写分号以外的字符(比如 °C 是错的)。
用 ° 或 ° 也能用,但有细微差别
° 是十进制 Unicode 码点,° 是十六进制写法,两者效果相同。它们比 ° 更“底层”,适合需要动态拼接字符串的场景(比如 JS 里生成 HTML)。
- JS 中可写:
document.write("25" + "°" + "C") - 但注意:若字符串来自用户输入或 API,需先做 HTML 转义,否则
°可能被当成纯文本显示出来 - 在模板引擎(如 Vue/React)中,优先用组件内联写法(如
{'25\u00B0'}C),避免拼接 HTML 字符串
CSS 伪元素方案不适合单纯显示 °
有人尝试用 ::after 插入 content: "°",这看似灵活,但实际增加了复杂度和风险:
- 如果 CSS 加载失败或被禁用,温度数字后面就没了符号
- 屏幕阅读器可能无法把
25和伪元素的°正确连读为“25摄氏度” - 复制网页文字时,° 符号通常不会被一并复制
- 纯展示需求下,没必要绕路走 CSS
真正需要动态控制符号样式(比如颜色/大小独立于数字)时,才考虑包裹 <span class="degree">°</span> 再单独设样式。










