我有诸如“ 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
答案 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