如何在UTF-8中打开dbf文件

时间:2018-08-22 13:21:09

标签: r dbf

我有一个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系统的语言环境

你知道怎么做吗?

1 个答案:

答案 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!