我有一个Excel文件,其中包含一些西班牙语字符(波浪号等),我需要将其转换为CSV文件以用作导入文件.但是,当我另存为CSV时,它会破坏非特殊的西班牙语字符,而不是ASCII字符.它似乎也是用左右引号和长短划线来做的,它们似乎来自原始用户在Mac中创建Excel文件.
由于CSV只是一个文本文件,我确信它可以处理UTF8编码,所以我猜它是一个Excel限制,但我正在寻找一种从Excel到CSV并保留非ASCII字符的方法完整.
当我从文件中读取内容时,有时会出现此错误" UTF-8中的无效字节序列 ".注意 - 只有在字符串中有一些特殊字符时才会发生这种情况.我试过没有"r:UTF-8"打开文件,但仍然得到相同的错误.
open(file, "r:UTF-8").each_line { |line| puts line.strip(",") } # line.strip generates the error
Run Code Online (Sandbox Code Playgroud)
文件内容:
# encoding: UTF-8
290919,"SE","26","Sk‰l","",59.4500,17.9500,, # this errors out
290956,"CZ","45","HornÌ Bradlo","",49.8000,15.7500,, # this errors out
290958,"NO","02","Svaland","",58.4000,8.0500,, # this works
Run Code Online (Sandbox Code Playgroud)
这是我从外面获得的CSV文件,我试图将其导入我的数据库,它顶部没有"#encoding:UTF-8",但我添加了这个,因为我读到了某处它将解决这个问题,但事实并非如此.:(
环境:
我在包含字符的数据集中有几个字符串
\x96
\x92
Run Code Online (Sandbox Code Playgroud)
和别的。
我不知道如何在 R 中为它们 grep。
我试过使用
pattern="\x96"
pattern="\\x96"
pattern="x96"
Run Code Online (Sandbox Code Playgroud)
但无济于事。
是否有处理此类字符的特定方法,特别是在 R 中。
** 更新 ** 根据评论中的建议,perl=TRUE允许 grep 工作
任何人都可以对正在发生的事情提供可靠的解释吗?
会话信息,如果相关
> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=C LC_COLLATE=C LC_MONETARY=C LC_MESSAGES=C LC_PAPER=C LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=C LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggplot2_0.9.3 RMySQL_0.9-3 DBI_0.2-5 stringr_0.6.1 data.table_1.8.6
Run Code Online (Sandbox Code Playgroud)