当前位置: 首页 > 知识库问答 >
问题:

R无法使用UTF-8正确编码罗马字符

钱志强
2023-03-14

我正在处理一个位置数据集,其中一些位置名称使用本地字符。大多数字符都被正确地看到,但我对一些罗马尼亚字符有意见,比如“ș”。

我尝试改变我的Windows 10 64位系统区域设置使用UTF-8编码,但这并没有解决问题。

可以在此处找到用于测试的示例文件:https://drive.google.com/file/d/1T7QQQ7G_dA_rXD9Ewf51uuQ6CUkscjP_/view?usp=sharing

此行导入数据:

df <- read.delim("R_Encode_Issue.csv", header=TRUE, sep=",", encoding = "UTF-8", colClasses=c("character","character","character"))

> df
  region country         chapter
1 Europe Moldova Chi<U+0219>inau

这将在控制台和查看器中将位置章节显示为“chiunu”(Stackoverflow无法显示此内容,即使:D)。

如果我将data_表转换为TIBLE:

df2 <- as_tibble(df)

> df2
# A tibble: 1 x 3
  region country chapter 
  <chr>  <chr>   <chr>   
1 Europe Moldova Chișinău

控制台将位置章节显示为“Chiinu”,但观众显示为“Chiinau”。

我将数据写入一个数据库。csv文件:

write.csv(df2, file = "R_Encode_Out.csv",row.names=FALSE, na="", fileEncoding = "UTF-8") 

在书面文件中,位置章节写为“chiunu”。

R版本:

platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          3                           
minor          5.3                         
year           2019                        
month          03                          
day            11                          
html" target="_blank">svn rev        76217                       
language       R                           
version.string R version 3.5.3 (2019-03-11)
nickname       Great Truth     

RStudio版本:

$mode
[1] "desktop"

$version
[1] ‘1.1.463’

当我在导入和导出时使用UTF-8作为编码时,我希望查看器,或者至少是写入的文件能够正确显示字符。但实际情况是,字符导出不正确。

我能做些什么来纠正这个问题?

共有1个答案

姜俊逸
2023-03-14

尝试使用不同于base R的导入和导出函数。我使用导出文件中的readr实现了这一点(看起来查看器确实将其显示为Chi)

library(readr)
df <- read_csv("C:/Users/Andrew/Downloads/R_Encode_Issue.csv", locale = locale(encoding = "UTF-8"))

df
# A tibble: 1 x 3
  region country chapter 
  <chr>  <chr>   <chr>   
1 Europe Moldova Chișinău

write_csv(df, "C:/Users/Andrew/Desktop/R_Encode_Issue.csv")

 类似资料:
  • 问题内容: 我正在尝试使用DOMDocument解析一些HTML,但是当我这样做时,我突然失去了编码(至少这对我来说是这样)。 这段代码的结果是我得到了一堆不是日语的字符。但是,如果我这样做: 正确显示。我尝试过saveHTML和saveXML,但都无法正确显示。我正在使用PHP 5.3。 我所看到的: 应该显示什么: 编辑:我已经将代码简化为五行,因此您可以自己对其进行测试。 这是返回的html

  • 我正在评估与thymeleaf模板引擎的Spring启动。我正面临UTF8字符表单张贴问题。 对于最简单的post示例: 在控制器中: 在本例中,Spring MVC(或thymeleaf)无法正确编码具有UTF-8字符的表单。 如果我输入,我将看到以下日志: 应编码为。正文应该是,但我不知道为什么它会变成,并被解码成错误的字符。 我在谷歌上搜索并找到了一些解决方案,比如添加一个编码过滤器: 但不

  • 我真的被Eclipselink MOXy 2.5.1卡住了,没有给我提供正确编码的亚洲字符(或其他字符,例如:德语umLautsäöü)。 我的代码: 测试类如下所示: 属性"key"仅为测试目的初始化一个字符串,我从一个UTF-8编码的文件中读取,该文件没有包含BOM 当我通过客户端调用这两种资源时: 我得到以下结果: 奇怪的是,当我在/test2中编组测试对象的toString()方法时,它将

  • 本章是由 Alex Cabal 最初撰写在 PHP Best Practices 中的,我们使用它作为进行建议的基础。 这不是在开玩笑。请小心、仔细并且前后一致地处理它。 目前,PHP 仍未在底层实现对 Unicode 的支持。虽然有很多途径可以确保 UTF-8 字符串能够被正确地处理,但这并不是很简单的事情,通常需要对 Web 应用进行全方面的检查,从 HTML 到 SQL 再到 PHP。我们将

  • 问题内容: 我试图在Go中找到以下C#代码的等效项。 我知道Go 中有一个crypto / sha1软件包。我知道我可以跑步: 我不确定散列时如何获得正确的编码。我想知道是否可以得到一些帮助来转换此 问题答案: 根据文档: 缺少字节级转义的字符串文字始终包含有效的UTF-8序列。 因此,如果在Golang源代码中,则无需将字符串编码为utf8。但是,如果字符串来自输入,则utf8包是您的朋友。

  • 问题内容: 我遇到了这行遗留代码,我试图找出这些遗留代码: 据我了解,它是使用相同的charSet进行编码和解码。 这与以下内容有何不同? 在任何情况下,两条生产线的输出将不同? ps:只是要澄清一下,是的,我知道Joel Spolsky撰写的关于编码 的出色文章! 问题答案: 这可能是很复杂的方式 这缩短了String,而所使用的基础char []则更长。 但是,更具体地说,将检查每个字符是否都