j**a RandomAccessFile readLine 中文 乱码

时间:2013.04.02 发布人:iyou1216

j**a RandomAccessFile readLine 中文 乱码

已解决问题

谷歌iyou1216用户在2013.04.02提交了关于“环太平洋雷霆再起j**a RandomAccessFile readLine 中文 乱码”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-03-17T10:25:34。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,谢谢你帮我,祝你快乐,愿你事事如意 !

希望以下的回答,能够帮助你。

第1个回答

用户名:nokian812  

读取的时候,进行下编码就可以了

/**
*读取文件内容
*
*@parampath
*路径
*@return文件内容string
*@author金鑫
*@version3.0时间:2010年1月23日14:56:44
*/
publicstaticStringgetFileContent(Stringpath){
Filefile球力他今育叫往表=newFile(pat用盐参林乙块发今设何h);
//分配新的直接字节缓冲区
ByteBufferbyteBuffer=ByteBuffer.alloca扩teDirect(186140);
StringBufferstringBuffer=ne严树加求喜够血导wStringBuffer(186140);
try{
FileInputStreamfileInputStream=newFileInputSt政松药文轴居我免们回ream(file);
//用于读取、写入、映射和操作文件的通道。
FileChannelfileChanne伟越案背营心社多l=fileInputStr药连测素事布eam.getChannel();
//编码字符集和字符编品以码方案的组合,用于处理中文,武选晶家可以更改
Charsetcharset=Charset.forName("GBK");
while(***.read(byteBuffer)!=-1){
//反转此缓冲区
byteBuffer.flip();
CharBufferchar民绝司史弦Buffer=charset.decode(byteBuffer);
stringBu技国先ffer.append(charBuffer.toString());
byteBuffer.clear();
}
fileIn守西putStream.close();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}它期承料远渐棉切当置catch(IOExceptione){
e.printStackTrace();
}
returnstringBuffer.toString();
}

你用的RandomAccessFile把上面的相应的类替换掉

轴克卫序环教最渐主要的是这一句
Charsetcharset=Charset.forName("G观虽北汽目井王BK");

和循环里面的CharBuffercharBuffer=charset.d花身胶剂上落课吃地ecode(byteBuffer);