java文件读取内容转码

java文件读取内容转码,第1张

读取的文件流如果是read(读取字节流的时候,中文就会是乱码)方法,所以现在全都是听过readline方式进行的读取。举例:

可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。

BufferedReader bre = null

try {

String file = "D:/test/test.txt"

bre = new BufferedReader(new FileReader(file))//此时获取到的bre就是整个文件的缓存流

while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环

{

System.out.println(str)//原样输出衡搏读到的内容

};

bre.close(),//关闭流,否则bre流会一直存在,直到程序慎拿运行结束。

除此之外,java文件读取的时候有中文就很出现乱码,通常获取到的文件中通常都是“iso8859-1”格式,需要转换为“UTF-8”格式。

如:String str = new String(str.getByte("iso8859-1"),"UTF-8")进行下强制转换后在进行读取即可。

备注:通常格式有GBK、UTf-8、iso8859-1、GB2312,如果宽拦搭上面的强制转换不成功,依次进行这些格式的尝试,肯定是可以解决问题的。

java不同编码之间进行转换,都需要使用unicode作为中转。

String str = "任意字符串"

str = new String(str.getBytes("gbk"),"utf-8")

备注说明:

str.getBytes("UTF-8")意思是以UTF-8的编码取得字节

new String(XXX,"UTF-8")意思是以UTF-8的编码生成字符串

举例:

public static String getUTF8XMLString(String xml) {

// A StringBuffer Object

StringBuffer sb = new StringBuffer()

sb.append(xml)

String xmString = ""

String xmlUTF8=""

try {

xmString = new String(sb.toString().getBytes("UTF-8"))

xmlUTF8 = URLEncoder.encode(xmString, "UTF-8")

System.out.println("utf-8 编码:" + xmlUTF8)

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

// return to String Formed

return xmlUTF8

扩展资料:

UTF-8编码规则:

如果只有一个字节则其最高二进制位为0;如果是多字节,颤郑其第一个字节从最高位开始,连续的二进制位值为1的个数决定了饥冲其编码的字节数,其余各字节均以10开头。

实际表示ASCII字符的UNICODE字符,将会编码成1个字节,并且UTF-8表示与ASCII字符表示是一样的。所有其他的UNICODE字符转化成UTF-8将需要至少2个字节。每个字节由一个换码序列开始。第一个字节由唯一的换码序列,由n位连续的1加一位0组成,首字节连续的1的个数表示字符编码所需的字节数。

Unicode转换为UTF-8时,可以将Unicode二进茄肢颂制从低位往高位取出二进制数字,每次取6位,如上述的二进制就可以分别取出为如下示例所示的格式,前面按格式填补,不足8位用0填补。

参考资料来源:百度百科:UTF-8

方法一:

思路:先转为Unicode,然后转为GBK

String utf8 = new String(t.getBytes( "UTF-8"))  

System.out.println(utf8)  

String unicode = new String(utf8.getBytes(),"UTF-8")   

System.out.println(unicode)  

String gbk = new String(unicode.getBytes("GBK"))  

  

System.out.println(gbk)

方法二:

public static void main(String[] args) {

        String str="字符串编码转换"

        try {

          byte[] temp=str.getBytes("utf-8")//这里写原编码方式

       轮瞎    磨派 byte[] newtemp=new String(temp,"utf-8").getBytes("gbk"腊游空)//这里写转换后的编码方式

            String newStr=new String(newtemp,"gbk")//这里写转换后的编码方式

            System.out.println(newStr)

        } catch (UnsupportedEncodingException e) {

            // TODO Auto-generated catch block

            e.printStackTrace()

        }

    }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12227192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存