/**
* gbk格式文本轉爲utf-8
*/
public class GBKToUTF8Util {
private static String path1 = "C:\\Users\\Desktop\\temp1\\";
private static String path2 = "C:\\Users\\Desktop\\temp2\\";
public static void main(String[] args) throws IOException {
BufferedReader reader = null;
BufferedWriter writer = null;
try {
File file1 = new File(path1 + "Test.java");
File file2 = new File(path2 + "Test.java");
if (!file2.exists()) {
file2.createNewFile();
}
reader = new BufferedReader(new InputStreamReader(new FileInputStream(file1), Charset.forName("GBK")));
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file2), Charset.forName("UTF-8")));
String str;
while ((str = reader.readLine()) != null) {
writer.write(str);
writer.newLine();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (writer != null) {
writer.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* gbk轉utf-8
*
* @param gbkStr
* @return
*/
public static String getUTF8StringFromGBKString(String gbkStr) {
try {
return new String(getUTF8BytesFromGBKString(gbkStr), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
private static byte[] getUTF8BytesFromGBKString(String gbkStr) {
int n = gbkStr.length();
byte[] utfBytes = new byte[3 * n];
int k = 0;
for (int i = 0; i < n; i++) {
int m = gbkStr.charAt(i);
if (m < 128 && m >= 0) {
utfBytes[k++] = (byte) m;
continue;
}
utfBytes[k++] = (byte) (0xe0 | (m >> 12));
utfBytes[k++] = (byte) (0x80 | ((m >> 6) & 0x3f));
utfBytes[k++] = (byte) (0x80 | (m & 0x3f));
}
if (k < utfBytes.length) {
byte[] tmp = new byte[k];
System.arraycopy(utfBytes, 0, tmp, 0, k);
return tmp;
}
return utfBytes;
}
}
GBK格式文本轉爲UTF-8格式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.