如何在R Markdown文档的htmltools标签中使用HTML特殊字符?
这个坑我之前踩过!htmltools包的tags函数默认会自动转义字符串里的HTML特殊字符(比如&会变成&),这是出于安全考虑,但当我们需要直接插入像μ这类HTML实体时,就需要手动告诉它不要转义。这里有几个实用的解决方法:
方法1:用htmltools::HTML()包裹内容
这是最直接的方式,HTML()函数会把传入的字符串标记为原始HTML内容,tags渲染时就不会对其进行转义处理:
htmltools::tags$th(htmltools::HTML("μ"))
运行这段代码后,生成的HTML就是你想要的:
<th>μ</th>
方法2:直接使用Unicode字符
如果不想写HTML实体,也可以直接在R代码里输入对应的Unicode字符。比如希腊字母μ的Unicode编码是U+00B5,直接写入字符串即可:
htmltools::tags$th("μ")
这种方式生成的HTML会直接包含该字符,浏览器同样能正确渲染,而且代码看起来更直观。
注意事项
使用HTML()时要特别注意:如果内容来自不可信的用户输入,不要直接用这个方法,否则可能会引发XSS(跨站脚本)安全风险。只有当你完全控制输入内容时,才推荐使用。
内容的提问来源于stack exchange,提问作者Leonardo Motta
相关产品推荐
相关产品推荐

