R 如何将代码(如编码、编码)转换为编码字符串?

R 如何将代码(如编码、编码)转换为编码字符串?,r,pdf,fonts,character-encoding,character,R,Pdf,Fonts,Character Encoding,Character,如何通过代码指定单个字符,并生成字符向量 在Python3中,您可以执行以下操作 ''.join(map(chr, range(255))) foo <- function(x, y) { # WHAT GOES HERE? } bar <- foo(0:255, "PDF") 即时应用程序是使用pdf和基本的14种字体制作字符代码图表,以供以后参考 我在找像这样的东西 ''.join(map(chr, range(255))) foo <- function(

如何通过代码指定单个字符,并生成字符向量

在Python3中,您可以执行以下操作

''.join(map(chr, range(255)))
foo <- function(x, y) {
    # WHAT GOES HERE?
}

bar <- foo(0:255, "PDF")
即时应用程序是使用
pdf
和基本的14种字体制作字符代码图表,以供以后参考

我在找像这样的东西

''.join(map(chr, range(255)))
foo <- function(x, y) {
    # WHAT GOES HERE?
}

bar <- foo(0:255, "PDF")
应使用与
bar

对应的任何字符标记(0,0),
as.raw()
函数将数字转换为原始字符代码。
rawToChar()
函数将这些字符转换为字符。一个复杂的问题是,目前除Windows之外的大多数系统都使用UTF-8编码,这些编码是多字节编码,但并非所有值都对应于合法字符

如果你尝试,你会得到一个错误

rawToChar(as.raw(0:255))
因为0不是字符串中的合法字节。如果你尝试

rawToChar(as.raw(1:255))
您将在我的控制台中得到如下打印的字符串:

[1] "\001\002\003\004\005\006\a\b\t\n\v\f\r\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\177\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
但是,这不是Adobe标准编码,而是系统上使用的任何编码。如果您确实想查看Adobe编码,则需要在显示之前转换为Unicode。这很棘手,因为
iconv()
(至少在我的系统上)不知道Adobe编码。但是,这种情况会:

ASE2Unicode <- read.delim("ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/stdenc.txt", 
                          comment.char="#", head=FALSE)
ASE2Unicode$V1 <- strtoi(ASE2Unicode$V1, 16)
ASE2Unicode$V2 <- strtoi(ASE2Unicode$V2, 16)
chars <- rep("", 256)
chars[ASE2Unicode$V2] <- intToUtf8(ASE2Unicode$V1, multiple = TRUE)
pdf("table2.pdf")
plot(nibble1, nibble2, type = "n") 
text(nibble1, nibble2, chars)
dev.off()

ASE2Unicode您可以获取单个字母,可以使用
字母
表示小写,也可以使用
字母
表示大写。要将选择转换为字符串,您可以使用
粘贴(字母[c(1:5,9,10,2)],折叠=“”)
,您可以忽略
粘贴
,并将单个字母表作为向量?好的,但是可以通过数字指定的仲裁字符(可能无法以任何其他方式指定)呢。您是说
pdf
函数期望文本编码为UTF-8,并且它知道如何将其映射到(在本例中)基14字符集中的字符吗?不,
pdf
函数根本不直接处理文本。在本例中,处理文本的是
text
函数,它需要R中支持的编码之一,即本机编码、拉丁语-1或UTF-8。通常本机编码是拉丁语-1或UTF-8,但不一定非要这样。很抱歉造成混淆。我的意思是“…由
pdf
函数返回的
pdf
设备需要文本…”,而您的意思是
text
函数“知道”该
pdf
设备需要什么,并提供适当的信息,对吗?我是说用户输入的文本。用户处理
text()
函数,并且必须为该函数提供适当格式的文本。R功能与图形驱动程序交互的方式记录在R内部构件手册第6.1.3节“处理文本”中。