如何在R中正常打印含Unicode十六进制字符的字符串?
在R中正常打印含HTML Unicode实体的字符串
你的字符串里的–是HTML Unicode十六进制实体,不是R原生的Unicode转义格式,直接用普通解码器肯定没用。下面给两种可行的解决办法:
方法一:使用xml2包解析
xml2包可以把HTML实体转换成对应的字符,步骤如下:
- 安装并加载xml2包:
install.packages("xml2") library(xml2)
- 把字符串包装成HTML节点,再提取文本:
str <- "foo – bar" parsed_str <- xml_text(read_xml(paste0("<p>", str, "</p>"))) cat(parsed_str) # 输出:foo – bar
方法二:使用stringi包替换HTML实体
stringi包的stri_replace_all_html函数可以直接替换所有HTML实体:
- 安装并加载stringi包:
install.packages("stringi") library(stringi)
- 直接处理字符串:
str <- "foo – bar" parsed_str <- stri_replace_all_html(str) cat(parsed_str) # 输出:foo – bar
这两种方法都能把–转换成对应的短破折号,之后用cat()就能正常打印出目标字符了。
内容的提问来源于stack exchange,提问作者geotheory
相关产品推荐
相关产品推荐

