Encoding
位于 base
包(package)。 说明
读取或设置字符向量的声明编码。
用法
Encoding(x)
Encoding(x) <- value
enc2native(x)
enc2utf8(x)
参数
x |
字符向量。 |
value |
正长度的字符向量。 |
细节
中的字符串R可以声明为编码为"latin1"
或者"UTF-8"
或作为"bytes"
。这些声明可以通过以下方式阅读:Encoding
,这将返回值的字符向量"latin1"
,"UTF-8"
"bytes"
或者"unknown"
,或设置,当value
根据需要被回收,其他值被默默地视为"unknown"
。 ASCII 字符串永远不会用声明的编码进行标记,因为它们的表示在所有支持的编码中都是相同的。字符串标记为"bytes"
旨在作为非 ASCII 字符串,应将其作为字节进行操作,并且永远不会转换为字符编码(因此仅支持将它们写入文本文件writeLines(useBytes = TRUE)
)。
enc2native
和 enc2utf8
将字符向量的元素分别转换为本机编码或 UTF-8,同时考虑任何标记的编码。它们是 primitive 函数,旨在进行最少的复制。
除了显式设置它之外,字符串还有其他方法来获取声明的编码(这些方法已更改为R进化了)。解析器标记包含‘的字符串\u' 或者 '\U’逃脱了。函数scan
,read.table
,readLines
, 和parse
有一个encoding
用于声明编码的参数,iconv
从其声明编码to
参数,并且还声明了合适区域设置中的控制台输入。intToUtf8
将其输出声明为"UTF-8"
,并输出文本连接(参见textConnection
) 如果在合适的区域设置中运行,则会被标记。在某些情况下(请参阅其帮助页面)source(encoding=)
将标记其输出的字符串的编码。
如果在相应的输入上声明了编码,大多数字符操作函数都会在输出字符串上设置编码。其中包括 chartr
、 strsplit(useBytes = FALSE)
、 tolower
和 toupper
以及 sub(useBytes = FALSE)
和 gsub(useBytes =
FALSE)
。请注意,此类函数不会保留编码,但如果它们知道输入编码并且字符串已成功重新编码(到当前编码或 UTF-8),它们就会标记输出。
substr
确实保留编码,而 chartr
、 tolower
和 toupper
在具有 Unicode 宽字符的系统上保留 UTF-8 编码。如果任何输入是 UTF-8,则使用 fixed
和 perl
选项, strsplit
、 sub
和 gsub
将给出标记的 UTF-8 结果。
如果任何相应输入被标记为字节,paste
和 sprintf
返回标记为字节的元素;如果任何输入被标记为 UTF-8,则返回标记为 UTF-8 的元素。
如果任何元素标记为 UTF-8,则 match
、 pmatch
、 charmatch
、 duplicated
和 unique
在 UTF-8 中全部匹配。
从正在运行的 R 会话更改当前编码可能会导致混乱(请参阅Sys.setlocale
)。
“Latin-1”语言环境的含义存在一些含糊之处,因为某些操作系统(尤其是 Windows)使用 ISO 8859-1 字符集中未定义的字符位置(或用于控制字符)。如何解释这些字符取决于系统,但从R3.5.0 如果可能的话,在转换为例如 3.5.0 时,它们会按照 Windows 代码页 1252(微软称之为“Windows Latin 1 (ANSI)”)进行解释。 UTF-8。
值
字符向量。
对于 enc2utf8
编码,始终进行标记:它们适用于 UTF-8 和 Latin-1 语言环境中的 enc2native
。
例子
## x is intended to be in latin1
x. <- x <- "fran\xE7ais"
Encoding(x.) # "unknown" (UTF-8 loc.) | "latin1" (8859-1/CP-1252 loc.) | ....
Encoding(x) <- "latin1"
x
xx <- iconv(x, "latin1", "UTF-8")
Encoding(c(x., x, xx))
c(x, xx)
xb <- xx; Encoding(xb) <- "bytes"
xb # will be encoded in hex
cat("x = ", x, ", xx = ", xx, ", xb = ", xb, "\n", sep = "")
(Ex <- Encoding(c(x.,x,xx,xb)))
stopifnot(identical(Ex, c(Encoding(x.), Encoding(x),
Encoding(xx), Encoding(xb))))
相关用法
- R Extremes 最大值和最小值
- R Extract 提取或替换对象的部分
- R Extract.factor 提取或替换部分因子
- R Extract.data.frame 提取或替换 DataFrame 的部分内容
- R file.path 构造文件路径
- R grep 模式匹配和替换
- R getwd 获取或设置工作目录
- R vector 向量 - 创建、强制等
- 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-devel大神的英文原创作品 Read or Set the Declared Encodings for a Character Vector。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。