将UTF-8十六进制转换为Unicode十六进制

时间:2019-10-09 14:11:03

标签: r string unicode utf-8

我有诸如“ flamenguistas e s \ xc3a3 paulinos”之类的字符串,以这种方式包含UTF-8代码“ \ xc3a3”。如何将其转换为字母“ã”?

我遇到了麻烦,因为大多数用于转义的功能都期望代码为Unicode,而我却找不到能够将UTF-8十六进制转换为Unicode十六进制的正确方法。

除了编写从表中读取并转换的函数以外,是否有一种简单的方法可以将UTF-8十六进制转换为Unicode十六进制?

P.S。当我说“ Unicode十六进制” /“ UTF-8十六进制”时,我的意思是在这里:https://en.wikipedia.org/wiki/%C3%87#Computer

1 个答案:

答案 0 :(得分:0)

似乎R支持PCRE regex。您可以移植以下替换项。

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