为什么编码格式为带BOM的UTF-8在读取的时候会多出几个字符还不显示,这个原因看我上一篇文章,接下来说下解决方式
首先需要去判断下txt的编码格式
这里的unicode指的就是带BOM的UTF-8格式,这块应该是叫做unicode,如果不对麻烦指出来
// 判断编码格式
final InputStream inputStream = new FileInputStream( localFileString );
String code = "";
final byte[] head = new byte[ 3 ];
inputStream.read( head );
if ( head[ 0 ] == -17 && head[ 1 ] == -69 && head[ 2 ] == -65 )
{
code = "Unicode";
}
else if ( head[ 0 ] == -2 && head[ 1 ] == -1 )
{
code = "UTF-8";
}
我们在判断出编码格式后,就能在编码格式为带BOM的utf-8条件中处理一些逻辑,因为他只有第一行才会多出三个字符,所以我们只需要在第一行去掉三个字符就可以,其他行读出的都正常。如下,
while ( ( data = br.readLine() ) != null )
{
count++;
if ( count == 1 && code.equals( "Unicode" ) )
{
byte[] bytes = data.getBytes();
data = new String( bytes, 3, bytes.length - 3 );
}
}