8文件的编码

eivnm1vs  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(377)

我正在写一个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);

你能帮帮我吗!

nhn9ugyo

nhn9ugyo1#

我发现答案是:

if(encoding.compareTo("CP1252")==0)
        valueInString= new String(value.getBytes(),
            0, value.getLength(), 
            StandardCharsets.ISO_8859_1);
    else valueInString=value.toString();

相关问题