R语音读取txt报错:UTF-16不支持 或者<ff><fe><63>‘多字节字符串有错

时间:2021-06-04 14:23:46   收藏:0   阅读:17

1. 问题描述

一个txt文件,使用R中的data.table包中的fread函数读取时,报错:

>?dat?=?fread("test.txt")
Error?in?fread("test.txt")?:?
??File?is?encoded?in?UTF-16,?this?encoding?is?not?supported?by?fread().?Please?recode?the?file?to?UTF-8.

使用read.table

>?dat?=?read.table("test.txt")
Error?in?type.convert.default(data[[i]],?as.is?=?as.is[i],?dec?=?dec,??:?
??‘‘多字节字符串有错
此外:?Warning?messages:
1:?In?read.table("test.txt")?:?line?1?appears?to?contain?embedded?nulls
2:?In?read.table("test.txt")?:?line?2?appears?to?contain?embedded?nulls
3:?In?read.table("test.txt")?:?line?3?appears?to?contain?embedded?nulls
4:?In?read.table("test.txt")?:?line?4?appears?to?contain?embedded?nulls
5:?In?read.table("test.txt")?:?line?5?appears?to?contain?embedded?nulls
6:?In?scan(file?=?file,?what?=?what,?sep?=?sep,?quote?=?quote,?dec?=?dec,??:
??embedded?nul(s)?found?in?input

2. 问题解决

用notepad++查看了一下,编码形式:UCS-2

技术分享图片
所以,在read.table中,设定编码形式:fileEncoding="UCS-2LE"

因此,修改后的代码为:

>?dat?=?read.table("test.txt",fileEncoding?=?"UCS-2",header?=?T)
>?head(dat)
???????????????chipID???sampleID
1?202884940082_R02C04?CW63976425
2?202884940082_R03C01?CW63976831
3?202884940082_R03C02?CW63976366
4?202884940082_R03C03?CW63976367
5?202884940082_R03C04?CW63976433
6?202884940082_R04C01?CW63976615

搞定!。

3. 解决思路总结

查看文件的编码形式,用notepad++查看,然后定义编码的类型,使用read.table读取时,定义一下fileEncoding即可。以前我以为data.table包中的fread是万能的,没想到它给出报错不支持UTF-16,最后还是用基础包中的read.table解决了问题。

真香!

原文:https://blog.51cto.com/yijiaobani/2856299

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!