我有一个.csv文件,其中包含以下数据:
"?","?"
1,10
2,20
Run Code Online (Sandbox Code Playgroud)
我无法将其读入R中,以便列名显示在文件中.
d <- read.csv("./Data/1.csv", fileEncoding="UTF-8")
head(d)
Run Code Online (Sandbox Code Playgroud)
产生以下内容:
> d <- read.csv("./Data/1.csv", fileEncoding="UTF-8")
Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote, :
invalid input found on input connection './Data/1.csv'
2: In read.table(file = file, header = header, sep = sep, quote = quote, :
incomplete final line found by readTableHeader on './Data/1.csv'
> head(d)
[1] X.
<0 rows> (or 0-length row.names)
Run Code Online (Sandbox Code Playgroud)
同时,在不指定fileEncoding的情况下执行相同操作会产生以下结果:
> d <- read.csv("./Data/1.csv")
> head(d)
Ô. …Run Code Online (Sandbox Code Playgroud) 我正在从MySQL数据库通过RJDBC读取文件,它正确显示R中的所有字母(例如,נווהשאנן).但是,即使使用write.csv和fileEncoding ="UTF-8"导出它,输出看起来像
<U+0436>.<U+043A>. <U+041B><U+043E><U+0437><U+0435><U+043D><U+0435><U+0446>(在这种情况下,这不是上面的字符串而是保加利亚字符串),用于保加利亚语,希伯来语,中文等等.其他特殊字符,如ã,ç等工作正常.
我怀疑这是因为UTF-8 BOM,但我没有在网上找到解决方案
我的操作系统是德语Windows7.
编辑:我试过了
con<-file("file.csv",encoding="UTF-8")
write.csv(x,con,row.names=FALSE)
Run Code Online (Sandbox Code Playgroud)
和(afaik)等价物write.csv(x, file="file.csv",fileEncoding="UTF-8",row.names=FALSE).
了解 unicode、语言环境、宽字符和转换对我来说是一次可怕的经历。
我需要读取包含俄语和英语,中国和乌克兰字符的文本文件一次全部
我的方法是以字节块读取文件,然后对块进行操作,在单独的线程上进行快速读取。(关联)
这是使用 std::ifstream.read(myChunkBuffer, chunk_byteSize)
但是,我知道如果我坚持使用char.
就此而言,我将一切都转化wchar_t为最佳状态并希望得到最好的结果。
我也知道Sys.setlocale(locale = "Russian") (链接),但它不是将每个字符解释为俄语吗?当我解析字节时,我不知道何时在我的 4 种语言之间切换。
在 Windows 操作系统上,我可以创建一个 .txt 文件并写上“??????!你好!” 在程序 Notepad++ 中,它将保存文件并以相同的字母重新打开。它是否以某种方式在每个字符后秘密添加隐形标记,以了解何时解释为俄语,何时解释为英语?
我目前的理解是:将所有内容都作为wchar_t(双字节),将任何文件解释为 UTF-16(双字节) - 是否正确?
另外,我希望保持代码跨平台。
对不起菜鸟