当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R validUTF8 检查字符向量是否有效编码


R语言 validUTF8 位于 base 包(package)。

说明

检查字符向量的每个元素在其隐含编码中是否有效。

用法

validUTF8(x)
validEnc(x)

参数

x

一个字符向量。

细节

这些使用与 grep 等函数使用的检查类似的检查。

validUTF8 忽略任何标记的编码(请参阅 Encoding ),因此直接查看每个字符串中的字节是否是有效的 UTF-8。 (有关 ‘noncharacters’ 的有效性,请参阅 intToUtf8 的帮助。)

validEnc认为字符串是有效编码的,除非它们的编码被标记为 UTF-8 或者它们未被标记并且R会话采用 UTF-8 或其他多字节语言环境。 (其他多字节语言环境中的检查取决于操作系统,并且与iconv并非所有无效输入都可以被检测到。)

x 长度相同的逻辑向量。 NA 元素被视为有效编码。

注意

可以检查 Latin-1 编码中字符串的有效性,但诸如 CP1252 之类的扩展被广泛接受为“Latin-1”,并且很少需要检查 8 位编码的有效性。

例子

x <-
  ## from example(text)
c("Jetz", "no", "chli", "z\xc3\xbcrit\xc3\xbc\xc3\xbctsch:",
  "(noch", "ein", "bi\xc3\x9fchen", "Z\xc3\xbc", "deutsch)",
   ## from a CRAN check log
   "\xfa\xb4\xbf\xbf\x9f")
validUTF8(x)
validEnc(x) # depends on the locale
Encoding(x) <-"UTF-8"
validEnc(x) # typically the last, x[10], is invalid

## Maybe advantageous to declare it "unknown":
G <- x ; Encoding(G[!validEnc(G)]) <- "unknown"
try( substr(x, 1,1) ) # gives 'invalid multibyte string' error in a UTF-8 locale
try( substr(G, 1,1) ) # works in a UTF-8 locale
nchar(G) # fine, too
## but it is not "more valid" typically:
all.equal(validEnc(x),
          validEnc(G)) # typically TRUE

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Check if a Character Vector is Validly Encoded。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。