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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。