R中的扩展ASCII

时间:2014-11-12 02:11:35

标签: r

'\ xfe'的扩展ASCII字符是'þ'。

然而,当我尝试打印角色时,我得到:

> print('\xfe')
[1] "\376"

有没有办法打印'þ'?

编辑以按要求添加上下文:

> getOption("encoding")
[1] "native.enc"
> l10n_info()
$MBCS
[1] FALSE

$`UTF-8`
[1] FALSE

$`Latin-1`
[1] FALSE

> Sys.getlocale()
[1] "C"

3 个答案:

答案 0 :(得分:1)

您是否尝试过'\u00FE'。希望在不同的语言环境中没有什么不同

答案 1 :(得分:0)

我可以在C语言环境中的Linux机器上重现该问题

.Platform$OS.type
## [1] "unix"
Sys.getlocale()
## [1] "C"
'\xfe'
## [1] "\376"

在Windows计算机上,即使语言环境为"C",它也能正确打印刺。

如果我将区域设置的LC_CTYPE部分更改为带有UTF-8后缀的部分,并使用Scott Chamberlain建议的\u规范,我可以正确地打印刺。

# Easy test, thorn is a common char: Icelandic
Sys.setlocale("LC_CTYPE", "is_IS.utf8") 
'\u00FE'
## [1] "þ"

# Harder test, thorn is very rare: English
Sys.setlocale("LC_CTYPE", "en_GB.utf8") 
'\u00FE'
## [1] "þ"

# Even harder test, thorn is unused: Arabic
Sys.setlocale("LC_CTYPE", "ar_QA.utf8") 
'\u00FE'
## [1] "þ"

答案 2 :(得分:0)

您确定“\ xfe”的扩展ASCII字符是“þ”吗?如果我没错的话,我认为这对“utf-8”或“latin1”都有用。

无论如何,这就是我得到你要求的印刷品的方式:

x <- "\xfe"
Encoding(x)
#[1] "latin1"

l10n_info()将为您提供您的语言环境字符集(在我的情况下,LATIN-1是语言环境):

l10n_info()
#$MBCS
#[1] FALSE

#$`UTF-8`
#[1] FALSE

#$`Latin-1`
#[1] TRUE

#$codepage
#[1] 1252

由于x和locale charset都是latin1,print()将正确显示你想要的字符:

print(x)
#[1] "þ"