r - 将 UTF-8 十六进制转换为 Unicode 十六进制
问题描述
我有诸如“flamenguistas es\xc3a3o paulinos”之类的字符串,其中包含以这种方式“\xc3a3”的UTF-8代码。我如何把它变成字母“ã”?
我遇到了麻烦,因为大多数用于取消转义的函数都期望代码是 Unicode,而我无法找到将 UTF-8 十六进制转换为 Unicode 十六进制的正确方法。
除了编写从表中读取的函数并进行转换之外,是否有一种简单的方法可以将 UTF-8 十六进制转换为 Unicode 十六进制?
PS当我说“Unicode hex”/“UTF-8 hex”时,我的意思是在这里:https ://en.wikipedia.org/wiki/%C3%87#Computer
解决方案
看起来 R 支持 PCRE 正则表达式。您可以移植以下替换。
hex 函数接受一串十六进制数字并将其转换为数字。chr 函数接受一个数字并将其转换为字符。点运算符是字符串连接。整个结果由 UTF-8 编码的八位字节组成。
#!/usr/bin/env perl
$_ = <<'';
flamenguistas e s\xc3a3o paulinos
s|
\\x # literal \x
( # capture into $1
[0-9a-f] # hex digits
{2} # exactly two times
)
( # capture into $2
[0-9a-f]
{2}
)
|
chr(hex($1)) . chr(hex($2))
|egmsx;
print; # flamenguistas e são paulinos
推荐阅读
- r - 将因子类型中的数字转换为日期
- html - 悬停时在导航栏上方显示导航下拉菜单
- c++ - 具有 ADL 支持的就地 make_unique
- python-3.x - 无法安装 `eth-tester` Python 包
- maven - protobuf-maven-plugin 编译成 golang
- python - 使用第三方库时出现“gbk”的 Python UnicodeDecodeError
- php - 如何将 MySQL 数据透视表精确复制(样式和数据)到 HTML?
- ios - 为什么网络状态没有迅速更新?
- keras - How to pass weights to mean squared error in keras
- r - R vegtrans doss 函数在labdsv 2.0 版中不存在,而在labdsv 1.8 中存在?