关闭

RandomAccessFile 的默认编码为ISO-8859-1

标签: bytestringnull
1581人阅读 评论(1) 收藏 举报
分类:

private String getEncodeType(RandomAccessFile randomFile) {
		String encodeType = "utf-8";
		
		if(randomFile == null) {
			return encodeType;
		}
		
		try {
			randomFile.seek(1l);
			
			byte[] first3bytes = new byte[3];
			randomFile.read(first3bytes);
			
			if(first3bytes[0] == (byte) 0xEF && first3bytes[1] == (byte) 0xBB
                    && first3bytes[2] == (byte) 0xBF) {
				encodeType = "utf-8";
			}
			else if(first3bytes[0] == (byte) 0xFF
                    && first3bytes[1] == (byte) 0xFE) {
				encodeType = "unicode";
			}
			 else if (first3bytes[0] == (byte) 0xFE
                     && first3bytes[1] == (byte) 0xFF) {
				 encodeType = "utf-16be";
			 }
			 else if (first3bytes[0] == (byte) 0xFF
                     && first3bytes[1] == (byte) 0xFF) {
				 encodeType = "utf-16le";
			 }
			 else {
                 encodeType = "gbk";
			 }
			
			randomFile.seek(0);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return encodeType;
	}

RandomAccessFile 的默认编码为ISO-8859-1,出现中文乱码需要如此

readStr.getBytes("ISO-8859-1"), encode);

encode为你所读文件的编码格式,获取方法

有错请指正



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:29164次
    • 积分:396
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:9篇
    • 译文:0篇
    • 评论:1条