我有一个UTF-8编码的dbf文件。当我在带有CP1250字符集的Windows上使用read.dbf()
(软件包foreign
)在R中打开它时,字符已损坏:
require(foreign)
x <- read.dbf('file.dbf')
Sys.setlocale()
# "LC_COLLATE=Czech_Czech Republic.1250;LC_CTYPE=Czech_Czech Republic.1250;LC_MONETARY=Czech_Czech Republic.1250;LC_NUMERIC=C;LC_TIME=Czech_Czech Republic.1250"
我想知道是否应该按照此处的某些答案建议设置不同的语言环境,但是在Win XP上不起作用-当我尝试将语言环境设置为UTF-8时,它说“ OS报告请求设置不能接受“ Czech_Czech Rebublic.UTF8”的语言环境。
我认为设计时不必设置新的语言环境(也see here)-它应该是函数read.dbf()
或可能进行一些后处理,以处理字符集,而无需切换整个R系统的语言环境。
答案 0 :(得分:0)
使用斯洛伐克语字符时,我也遇到类似的问题。
在设置read.dbf
的同时,我使用as.is = TRUE
来读取表格,以字符而不是因数来读取字符。将文件放在R中后,我将使用Encoding(tab$NAM) <-"UTF-8"
指定将编码为UTF-8。
它是这样的:
require(foreign)
# set slovak characters
Sys.setlocale(category = "LC_ALL", locale = "Slovak")
# Read data in .dbf (Usually exported from ArcGIS 10.4)
tab<- read.dbf("C:/Users/tab.dbf", as.is = TRUE)
# Check how special characters looks like
tab$NAM
"Veľký Polom" "Malý Polom" "Veľká Rača"
"Fabova hoÄľa"
# Set the correct encoding for your column with special characters
Encoding(tab$NAM) <-"UTF-8"
# Check it again
tab$NAM
"Veľký Polom" "Malý Polom" "Veľká Rača"
"Fabova hoľa"
Voila!