Hadoop读文件,文件编码为utf-8,仍有乱码

pz0513 2011-12-13 05:01:27
求救!
现在不是用mapreduce,我现在是直接读取HDFS上的文件,文件编码已经是utf-8,有中文,读入的时候仍然有乱码。。程序中mapreduce的部分没有乱码,应该是因为它的TextInputFormat默认已经是读取utf-8的了,但是下面的代码直接读取HDFS中的文件时却有乱码。代码中我明明已经指定utf-8的编码格式了,但是还是有乱码,为什么会这样?
相关代码如下:

InputStream in = null;
Path path;
path = filestatus.getPath();
long len = filestatus.getLen();
byte[] b = new byte[(int) len];
try {

in = fs.open(path);
BufferedReader reader = new BufferedReader(new InputStreamReader(in,"utf-8"));
...
} finally {
IOUtils.closeStream(in);
}

...全文
788 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
pz0513 2011-12-13
  • 打赏
  • 举报
回复
我现在知道了,问题好像是出在我用System.out.println输出的时候输出成了乱码,但我输出的时候是这样的:
System.out.println("termSeg: " + new String(termSeg.getBytes("utf-8")));

按道理应该能正确输出了吧?termSeg的内容本来应该是“海贼王”,但输出的时候输出成了“海贼??”,有乱码,怎么回事?怎么改啊?

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧