欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java IO文件編碼轉(zhuǎn)換實(shí)現(xiàn)代碼

 更新時(shí)間:2013年12月27日 16:08:18   作者:  
這篇文章主要介紹了Java IO文件編碼轉(zhuǎn)換實(shí)現(xiàn)代碼,有需要的朋友可以參考一下

對(duì)IO操作真心不是很懂。。。對(duì)編碼、亂碼也是一知半解。。。今天遇到了一個(gè)需求,要求將一個(gè)文件進(jìn)行編碼轉(zhuǎn)換,并且返回編碼后的字符串,如原本的GBK編碼,轉(zhuǎn)換為UTF-8

其中這個(gè)BytesEncodingDetect 類就不貼了。主要用了里面的獲取文件編碼格式。

剛開(kāi)始試了直接在源文件修改編碼方式,采用URLEncoder和URLDecoder進(jìn)行轉(zhuǎn)換,卻遲遲不行。出現(xiàn)了中文奇數(shù)最后一個(gè)字亂碼

百度找了解決方法,都未果,只好采用我的思路是:先讀取源文件的內(nèi)容,存放到StringBuffer里面,然后刪除源文件,再重新new一個(gè)文件,再以另一中編碼形式存放進(jìn)去。

查看編碼后效果:注意不要在eclipse查看效果,eclipse以一種編碼形式查看而已,所以可以在瀏覽器端查看如html文件,查看指定編碼可以右鍵---編碼,以此來(lái)判斷是否成功。

復(fù)制代碼 代碼如下:

package com.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URLDecoder;
import java.net.URLEncoder;

public class Transcoding {
 private BytesEncodingDetect encode = new BytesEncodingDetect();
 public Transcoding() {
 }

 /**
  * 編碼轉(zhuǎn)換
  * @param toCharset 要轉(zhuǎn)換的編碼
  * @param path 要轉(zhuǎn)換的文件路徑
  * @return
  * @throws Exception
  */
 public String encoding(String toCharset, String path) throws Exception{
  File srcFile = new File(path);
  int index = encode.detectEncoding(srcFile);
  String charset = BytesEncodingDetect.javaname[index];
  // 編碼相同,無(wú)需轉(zhuǎn)碼
  if (charset.equalsIgnoreCase(toCharset)) {
   return "編碼一樣,無(wú)需轉(zhuǎn)換";
  }

  InputStream in = new FileInputStream(path);

  BufferedReader br = new BufferedReader(
    new InputStreamReader(in, charset));

  StringBuffer sb = new StringBuffer();
  String s1;
  while ((s1=br.readLine())!=null) {
   String s = URLEncoder.encode(s1, toCharset);
   sb.append(s+"\r\n");//一行+回車
  }

  br.close();
  srcFile.delete();//刪除原來(lái)文件
  //重新以新編碼寫入文件并返回值
  File newfile = new File(path);//重新建原來(lái)的文件
  newfile.createNewFile();
  OutputStream out = new FileOutputStream(newfile);
  OutputStreamWriter  writer = new OutputStreamWriter(out, toCharset);
  BufferedWriter bw = new BufferedWriter(writer);
  bw.write(URLDecoder.decode(sb.toString(), toCharset));
  String result = URLDecoder.decode(sb.toString(), toCharset);
  bw.flush();//刷到文件中
  bw.close();
  return result;
 }

}

相關(guān)文章

  • 探索Java中的IP屬地獲取技術(shù)

    探索Java中的IP屬地獲取技術(shù)

    這篇文章主要為大家介紹了Java中的IP屬地獲取的技術(shù)探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • java基于jdbc連接mysql數(shù)據(jù)庫(kù)功能實(shí)例詳解

    java基于jdbc連接mysql數(shù)據(jù)庫(kù)功能實(shí)例詳解

    這篇文章主要介紹了java基于jdbc連接mysql數(shù)據(jù)庫(kù)功能,結(jié)合實(shí)例形式詳細(xì)分析了jdbc連接mysql數(shù)據(jù)庫(kù)的原理、步驟、實(shí)現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • Java微信公眾平臺(tái)開(kāi)發(fā)(3) 接收消息的分類及實(shí)體的創(chuàng)建

    Java微信公眾平臺(tái)開(kāi)發(fā)(3) 接收消息的分類及實(shí)體的創(chuàng)建

    這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺(tái)開(kāi)發(fā)第三步,接收消息的分類及實(shí)體的創(chuàng)建,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 詳解SpringBoot如何優(yōu)雅的進(jìn)行全局異常處理

    詳解SpringBoot如何優(yōu)雅的進(jìn)行全局異常處理

    在SpringBoot的開(kāi)發(fā)中,為了提高程序運(yùn)行的魯棒性,我們經(jīng)常需要對(duì)各種程序異常進(jìn)行處理,但是如果在每個(gè)出異常的地方進(jìn)行單獨(dú)處理的話,這會(huì)引入大量業(yè)務(wù)不相關(guān)的異常處理代碼,這篇文章帶大家了解一下如何優(yōu)雅的進(jìn)行全局異常處理
    2023-07-07
  • Java中LambdaQueryWrapper的常用方法詳解

    Java中LambdaQueryWrapper的常用方法詳解

    這篇文章主要給大家介紹了關(guān)于Java中LambdaQueryWrapper常用方法的相關(guān)資料,lambdaquerywrapper是一個(gè)Java庫(kù),用于構(gòu)建類型安全的Lambda表達(dá)式查詢,需要的朋友可以參考下
    2023-11-11
  • 深入解析StringBuffer和StringBuilder的區(qū)別

    深入解析StringBuffer和StringBuilder的區(qū)別

    以下是對(duì)java中StringBuffer與StringBuilder的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下
    2013-07-07
  • Java實(shí)例講解注解的應(yīng)用

    Java實(shí)例講解注解的應(yīng)用

    JAVA注解?Annotation(注解)是JDK1.5及以后版本引入的。它可以用于創(chuàng)建文檔,跟蹤代碼中的依賴性,甚至執(zhí)行基本編譯時(shí)檢查。注解是以‘@注解名’在代碼中存在的
    2022-06-06
  • IntelliJ IDEA 報(bào)錯(cuò):找不到包或者找不到符號(hào)的問(wèn)題及解決方案

    IntelliJ IDEA 報(bào)錯(cuò):找不到包或者找不到符號(hào)的問(wèn)題及解決方案

    這篇文章主要介紹了IntelliJ IDEA 報(bào)錯(cuò):找不到包或者找不到符號(hào)的問(wèn)題及解決方案,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • spring boot啟動(dòng)加載數(shù)據(jù)原理分析

    spring boot啟動(dòng)加載數(shù)據(jù)原理分析

    實(shí)際應(yīng)用中,我們會(huì)有在項(xiàng)目服務(wù)啟動(dòng)的時(shí)候就去加載一些數(shù)據(jù)或做一些事情這樣的需求。這時(shí)spring Boot 為我們提供了一個(gè)方法,通過(guò)實(shí)現(xiàn)接口 CommandLineRunner 來(lái)實(shí)現(xiàn)。下面給大家詳細(xì)介紹下,需要的的朋友參考下吧
    2017-04-04
  • SpringCloud添加客戶端Eureka Client過(guò)程解析

    SpringCloud添加客戶端Eureka Client過(guò)程解析

    這篇文章主要介紹了SpringCloud添加客戶端Eureka Client過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論