我们正在尝试实现restapi,在这里接收json响应并将其转换为字符串json格式。我们正在尝试通过打开流将此字符串内容写入mapr fs。
FileSystem mfsHandler;
...
...
fsDataStream = mfsHandler.create(new Path("/demo/test.txt"), true);
String name = "Just to test";
byte[] namebytes = name.getBytes();
// fsDataStream.write(namebytes);
BufferedOutputStream bos = new BufferedOutputStream(fsDataStream);
bos.write(namebytes);
但是,在写入内容时,它会附加8位,使字符串向右移动8位。输出为:â¬ã^@^E必须测试
我试着跟帖- http://stackoverflow.com/questions/19687576/unwanted-chars-written-from-java-rest-api-to-hadoopdfs-using-fsdataoutputstream
,但无法获取解决方案。
如何避免这种垃圾字符?有没有其他方法可以避免8位右移?
1条答案
按热度按时间wswtfjt71#
这里的问题与java字符串的编码有关。您可以选择在调用getbytes时要使用的编码。
例如,这里有一个小程序,它打印出三种不同编码的字节:
以下是输出:
如果你打电话
getBytes()
如果不指定要使用的字符集,那么您将得到默认的字符集。这一点在各地都可能有所不同,因此,最好指定您想要什么。