R 如何在UTF-8编码文件中写入和读取可打印的ASCII字符?
我想用UTF-8编码写入包含字符的文件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
10001100
这是扩展ASCII表中的拉丁文大写连字OE
zz <- file("c:/testbin", "wb")
writeBin("10001100",zz)
close(zz)
试试这个(我用UTF编码替换了二进制值,因为我认为当您需要这样的输出时会更好):
这里有许多困难
- 首先,实际上有。由于您使用的是Windows,您可能正在使用其中一种,也称为
或,以及Win默认的“拉丁”编码。但是,在这个表族中。在Windows-1252
中,CP1252
表示为中的“Œ”
或10001100
。但是它。在“\x8c”
中,它对应于UTF-8
或“\xc5\x92”
,如rlegendi所示“\u0152”
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)