1. 程式人生 > >檔案編碼格式ANSI轉UTF8

檔案編碼格式ANSI轉UTF8

package test;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import
java.io.PrintWriter; public class AnsiToUtf8 { /** * 讀寫檔案方式改變檔案編碼格式 * @param path * @throws IOException */ public static void ansiToUTF8(String path) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path), "GB2312"
)); String all = ""; String line = null; while((line = br.readLine()) != null){ all += line + "\r\n"; } br.close(); PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path), "UTF-8"))); out.write(all); out.flush(); out.close(); } /** * 判斷檔案編碼格式是否為UTF8 * @param
path * @return * @throws IOException */
public static boolean isUTF8(String path) throws IOException{ BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path)); byte[] b = new byte[3]; bis.mark(0); bis.read(b, 0, 3); if(b[0] == (byte)0xEF && b[1] == (byte)0xBB && b[2] == (byte)0xBF){ bis.close(); return true; } bis.reset(); int read; while((read = bis.read()) != -1){ if (read >= 0xF0) break; if (0x80 <= read && read <= 0xBF) // 單獨出現BF以下的,也算是GBK break; if (0xC0 <= read && read <= 0xDF) { read = bis.read(); if (0x80 <= read && read <= 0xBF) // 雙位元組 (0xC0 - 0xDF) continue; else break; } else if (0xE0 <= read && read <= 0xEF) {// 也有可能出錯,但是機率較小 read = bis.read(); if (0x80 <= read && read <= 0xBF) { read = bis.read(); if (0x80 <= read && read <= 0xBF) { bis.close(); return true; } else break; } else break; } } bis.close(); return false; } /** * 遍歷資料夾下所有檔案 * @param dir * @throws IOException */ public static void traverseFolder(File dir) throws IOException{ File[] files = dir.listFiles(); for (File file : files) { // System.out.println(file.getName()); if(file.isDirectory()){ traverseFolder(file); } else if(file.getName().endsWith(".java") && !isUTF8(file.getAbsolutePath())){ ansiToUTF8(file.getAbsolutePath()); } } } public static void main(String[] args){ File dir = new File("d:\\test"); try { traverseFolder(dir); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

相關推薦

檔案編碼格式ANSIUTF8

package test; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.F

Jsoup爬取網頁亂碼編碼格式gb2312utf8

最近做的一個專案需要爬取股票公告並存儲於mongodb中用來顯示,當我在用jsoup爬取新浪財經股票公告的時候,發現了亂碼問題。網頁連結如下http://vip.stock.finance.sina.

c++對編碼格式ANSI utf8 unicode 進行轉換

Windows下有很多種編碼格式,在與別的系統環境中有檔案傳輸或通訊時,這些編碼就很重要。 比如在windows中換行是\r\n 在linux或mac下是\n,如果不對編碼進行轉換就會出現亂碼。在通訊

Linux 檔案編碼格式轉換

如果需要在Linux 中操作windows下的檔案,那麼經常遇到檔案編碼轉換的問題。 Windows中預設的檔案格式是GBK(gb2312),而Linux一般都是UTF-8。 檢視檔案編碼 在vim 中可以直接檢視檔案編碼 輸入命令 :set fileencoding 即可顯示檔案編碼格式。 檔案

idea 執行java檔案編碼格式錯誤問題

1.專案剛從git上面匯出,執行時出現這個非法字元提示,  問題: 解決方法: 找到當前檔案的左下角,將UTF8切換為GBK,然後再從GBK切換為UTF8 2.專案新建匯入資料庫時沒有注意匯入時的資料編碼格式導致頁面亂碼 問題:

設定更改檔案編碼格式

一、儲存時更改編碼 直接在檔案儲存時 選擇編碼格式 如下圖,將檔案編碼更改為UTF-8: 二、用文字編輯器 儲存時更改編碼型別較少,為了更改其他編碼格式,可以利用文字編輯器進行更改編碼格式  比如NotePad++,editplus等文字編輯器更改 例:用ed

Linux下檔案編碼格式轉換

常常在Linux中操作Windows下的檔案時,會遇到亂碼的情形。常見的比如在Visual Studio 中寫的C\C++程式需要放到Linux主機上編譯,而程式的中文註釋則顯示為亂碼,比較嚴重的是由於編碼原因,Linux上的編譯器報錯。 這是由於Windows中預設的檔案格式是GBK(gb2312),而L

編碼轉換(gbk2utf8,by c++),判斷編碼格式是否為utf8

#include <iconv.h> #include #include bool IsTextUTF8(const char* str,int length) { int nBytes=0;//UFT8可用1-6個位元組編碼,

檔案編碼轉化 GBK UTF-8工具類

import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import ja

數碼相框(三)電子書(附一)判斷檔案編碼格式

/*     功能:實現檔案編碼格式的判斷     通過一個檔案的最前面三個位元組,可以判斷出該的編碼型別:     ANSI: 無格式定義;(第一個位元組開始就是檔案內

JAVA幾種常見的編碼格式

簡介   編碼問題一直困擾著開發人員,尤其在 Java 中更加明顯,因為 Java 是跨平臺語言,不同平臺之間編碼之間的切換較多。本文將向你詳細介紹 Java 中編碼問題出現的根本原因,你將瞭解到:Java 中經常遇到的幾種編碼格式的區別;Java 中經常需要編

AVI視訊檔案編碼格式不受支援0xc00d5212怎麼解決?

AVI視訊格式的優點是影象質量好,但最普遍的現象就是高版本Windows媒體播放器播放不了採用早期編碼編輯的AVI格式視訊,而低版本Windows媒體播放器又播放不了採用最新編碼編輯的AVI格式視訊。 所以我們在進行一些AVI格式的視訊播放時,常會出現由於視訊編碼問題而造成

visual studio 檔案編碼格式(UTF - 8)

最近將程式碼從ubuntu轉到windows下用visual studio 2017編譯時遇到編碼格式的問題,因為在ubuntu下用visual studio code編輯程式碼時預設的格式是UTF-8,而visual studio中預設的是GB-2312,下面介紹下如何將visual st

Eclipse中設定工程所有檔案編碼格式為utf-8

在使用Eclipse開發過程中,常遇到檔案的編碼格式不統一造成亂碼的問題,那麼我們有沒有什麼方法,把工程下的檔案全設定成一種統一的編碼格式,比如UTF-8 ,參考如下: 將工程中的檔案編碼格式設定UTF-8則需要做以下工作: 1、windows->Prefere

使用python實現批量轉換檔案編碼格式

最近在學習redis的原始碼,從網上下載了一份大神註釋好的程式碼,但是檔案編碼格式是utf-8的使用sourcesight開啟會出現亂碼,sourceinsight不支援utf-8格式,網上找了一下,說需要安裝外掛解決,今天主要目的不是整sourceinsight,主要最近在

linux 下的檔案編碼格式轉換

使用場景: 在 linux 平臺上對檔案格式進行轉換,比如將GBK格式的檔案轉換為UTF8格式 轉換方法 1. 使用 iconv 使用 man 檢視 iconv 的幫助命令,比較簡單 NAME iconv - Convert en

Linux 檔案編碼格式設定

執行shell檔案時候,報錯   一般是編碼格式問題,可能是dos格式, 用vi命令開啟要替換尖括號的檔案 直接輸入:   :set ff=unix 表示設定檔案格式是unix格式 然

java判斷檔案編碼格式

 按照給定的字符集儲存檔案時,在檔案的最開頭的三個位元組中就有可能儲存著編碼資訊,所以,基本的原理就是隻要讀出檔案前三個位元組,判定這些位元組的值,就可以得知其編碼的格式。其實,如果專案執行的平臺就是中文作業系統,如果這些文字檔案在專案內產生,即開發人員可以控制文字的編碼格式,只要判定兩種常見的編碼就可以了

FilesCodingConvert--批量檔案編碼格式轉換工具

FilesCodingConvert–批量檔案編碼格式轉換工具 簡介 最近開始學習使用Android Studio,因為它的方便易用,我打算以後就不在使用ADT的方式編寫Android專案了。當從Eclipse專案向AS專案遷移時遇到了一個問題,就是檔案

檔案編碼格式轉換

package com.test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; impo