最近在写MapReduce程序,实现Writable接口时发现总是读不进中文字,读出来全是乱码,找了一晚上发现问题,原来hadoop只支持UTF-8的字符集,因此,在存储Text变量时要先把string变量转换成UTF-8的字符集,再给Text赋值。问题解决。
hadoop只支持UTF-8字符集,所以需要将字符串String转化成utf-8再给Text赋值。另外你的上传到hdfs的文档也要是utf-8的否则即使使用此解决方法也会出错。
String str = new String("字符串".getBytes(),'UTF-8');
new Text().set(str)