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 vector 向量 - 創建、強製等
- R file.path 構造文件路徑
- R grep 模式匹配和替換
- R getwd 獲取或設置工作目錄
- R lapply 對列表或向量應用函數
- R dump R 對象的文本表示
- R Sys.getenv 獲取環境變量
- R rank 樣本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R pushBack 將文本推回連接
- R strsplit 分割字符向量的元素
- R seq.Date 生成規則的日期序列
- R invisible 將打印模式更改為不可見
- R noquote “無引號”字符串打印類
- R warning 警告信息
- R rapply 遞歸地將函數應用於列表
- R basename 操作文件路徑
- R with 評估數據環境中的表達式
- R formals 訪問和操縱形式參數
- R icuSetCollate 按 ICU 設置整理
- R search 給出 R 對象的搜索路徑
- R Defunct 將對象標記為已失效
- R gzcon 通過連接(解)壓縮 I/O
- R readRenviron 從文件設置環境變量
- R Sys.localeconv 查找當前語言環境中數字和貨幣表示形式的詳細信息
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Check if a Character Vector is Validly Encoded。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。