當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。