R 如何在UTF-8编码文件中写入和读取可打印的ASCII字符?

R 如何在UTF-8编码文件中写入和读取可打印的ASCII字符?,r,file-io,utf-8,ascii,file-encodings,R,File Io,Utf 8,Ascii,File Encodings,我想用UTF-8编码写入包含字符的文件 10001100这是扩展ASCII表中的拉丁文大写连字OE zz <- file("c:/testbin", "wb") writeBin("10001100",zz) close(zz) 试试这个(我用UTF编码替换了二进制值,因为我认为当您需要这样的输出时会更好): 这里有许多困难 首先,实际上有。由于您使用的是Windows,您可能正在使用其中一种,也称为Windows-1252或,以及Win默认的“拉丁”编码。但是,在这个表族中。在CP1

我想用UTF-8编码写入包含字符的文件
10001100
这是扩展ASCII表中的拉丁文大写连字OE

zz <- file("c:/testbin", "wb")
writeBin("10001100",zz)
close(zz)
试试这个(我用UTF编码替换了二进制值,因为我认为当您需要这样的输出时会更好):


这里有许多困难

  • 首先,实际上有。由于您使用的是Windows,您可能正在使用其中一种,也称为
    Windows-1252
    或,以及Win默认的“拉丁”编码。但是,在这个表族中。在
    CP1252
    中,
    中的“Œ”
    表示为
    10001100
    “\x8c”
    。但是它。在
    UTF-8
    中,它对应于
    “\xc5\x92”
    “\u0152”
    ,如rlegendi所示
因此,要将
UTF-8
CP1252
以二进制形式写入字符串,您必须将字符串转换为一个“原始”数字(字节的R类),然后转换为一个字符,将其“编码”从
CP1252
更改为
UTF-8
(实际上,将其字节值转换为
UTF-8
中相同字符的对应字节值),然后可以将其重新转换为原始值,最后写入文件:

char_bin_str <- '10001100'
char_u <- iconv(rawToChar(as.raw(strtoi(char_bin_str, base=2))),
              # "\x8c"    8c     140    '10001100'
                from="CP1252",
                to="UTF-8")

test.file <- "~/test-unicode-bytes.txt"

zz <- file(test.file, 'wb')
writeBin(charToRaw(char_u), zz)
close(zz)

char_bin_str为什么charToRaw(“Œ”)不是
8c
?你是如何在ascii表中找到
8c
?:-)的,你可以看到它。嗯,我不知道你用的是哪一个表,你能给我一个链接吗?根据本文档,这应该是
92
而不是
8c
作为UTF-8编码字符:序列
c58c
是字母O,带有宏,我从
charToRaw
中获得
8c
,你能把
sessionInfo()
的输出放到你的问题中吗?
writeBin(charToRaw("\u0152"), zz)
char_bin_str <- '10001100'
char_u <- iconv(rawToChar(as.raw(strtoi(char_bin_str, base=2))),
              # "\x8c"    8c     140    '10001100'
                from="CP1252",
                to="UTF-8")

test.file <- "~/test-unicode-bytes.txt"

zz <- file(test.file, 'wb')
writeBin(charToRaw(char_u), zz)
close(zz)