我正在写一个mapreduce程序来清理hdfs中存储的一些文件,因为我必须用utf-8编码所有文件,我试图在我的mapper中编码文本值,但是我的结果文件中仍然有错误。
if(encoding.compareTo("UTF-8")!=0){
final Charset fromCharset = Charset.forName(encoding);
final Charset toCharset = Charset.forName("UTF-8");
String fixed = new String(value.toString().getBytes(fromCharset), toCharset);
result= new String(fixed);
我还定制了linereader,以便在存储到text对象之前将读取到utf-8的字节进行编码。
//buffer contain the data readed in a line of the file
String s = new String(buffer, startPosn, appendLength);
byte ptext[] = Charset.forName("UTF-8").encode(s).array();
str.append(ptext, 0, ptext.length);
你能帮帮我吗!
1条答案
按热度按时间nhn9ugyo1#
我发现答案是: