⑴ java utf 8轉gbk
utf8和gb2312本來就是兩個不同的字元集,對於中文來說,它們的編碼並不會相同。如果剛開始的字元是utf8的,那麼轉換為gb2312後自然會是亂碼;如果初始時是gb2312的中文,而後經utf8中間編碼後又從utf8轉為gb2312後不會是亂碼的。
我想是這樣的!
這有往篇文章,是關於java字元編碼相關的,講的很詳細,有代碼示例,你可以去看一下:http://vinter.javaeye.com/blog/670502
⑵ 有沒有做過Java的UTF-8編碼轉GBK
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
publicclassConvertCharset
{
=System.getProperty("line.separator");
(Stringpath,Stringback,Stringcs1,Stringcs2)
{
try
{
Filedir=newFile(path);
//adirectory,notafile
if(dir.isDirectory())
{
File[]files=dir.listFiles();
for(inti=0;i<files.length;i++)
{
Filedirt=files[i];
Stringfn=dirt.getName();
Stringname=path+File.separator+fn;
//recursion
if(dirt.isDirectory())
{
convertCharset(name,back+File.separator+fn,cs1,cs2);
}
else
{
//write
Filedest=newFile(back);
if(!dest.exists())
{
dest.mkdirs();
}
FileOutputStreamfos=newFileOutputStream(back+File.separator+fn);
OutputStreamWriterosw=newOutputStreamWriter(fos,cs2);
BufferedWriterbw=newBufferedWriter(osw);
//read
FileInputStreamfis=newFileInputStream(name);
InputStreamReaderisr=newInputStreamReader(fis,cs1);
BufferedReaderbr=newBufferedReader(isr);
Stringline=null;
while(null!=(line=br.readLine()))
{
bw.write(line+SEPARATOR);
}
//write
fos.flush();
osw.flush();
bw.flush();
bw.close();
osw.close();
fos.close();
//read
br.close();
isr.close();
fis.close();
}
}
}
//asinglefile
else
{
//write
Filedest=newFile(back);
if(!dest.exists())
{
dest.mkdir();
}
FileOutputStreamfos=newFileOutputStream(back+File.separator+dir.getName());
OutputStreamWriterosw=newOutputStreamWriter(fos,cs2);
BufferedWriterbw=newBufferedWriter(osw);
//read
FileInputStreamfis=newFileInputStream(path);
InputStreamReaderisr=newInputStreamReader(fis,cs1);
BufferedReaderbr=newBufferedReader(isr);
Stringline=null;
while(null!=(line=br.readLine()))
{
bw.write(line+SEPARATOR);
}
//write
fos.flush();
osw.flush();
bw.flush();
bw.close();
osw.close();
fos.close();
//read
br.close();
isr.close();
fis.close();
}
System.out.println("ConvertSuccess!");
}
catch(Exceptione)
{
e.printStackTrace();
System.out.println("ConvertFailed!");
}
}
publicstaticvoidmain(String[]args)
{
//asinglefile
convertCharset("I:\2013313workspace\Yaojiangji\src\yaojiangji\paixu.java",
"I:\2013313workspace\Yaojiangji\back",
"UTF-8",
"GBK");
//notafile,it'sadirectory
// convertCharset("I:\2013313workspace\Yaojiangji\src\yaojiangji",
// "I:\2013313workspace\Yaojiangji\back\yaojiangji",
// "UTF-8",
// "GBK");
}
}
⑶ java怎麼把UTF-8字元串轉成GBK字元串
java不同編碼之間進行轉換,都需要使用unicode作為中轉。
以utf-8轉gbk為例,示例代碼如下:
Stringt="這是一個字元串aaa111";
Stringutf8=newString(t.getBytes("UTF-8"));
System.out.println(utf8);
Stringunicode=newString(utf8.getBytes(),"UTF-8");
System.out.println(unicode);
Stringgbk=newString(unicode.getBytes("GBK"));
System.out.println(gbk);
⑷ java txt文件utf-8轉GBK的問題
步驟一:直接把文件備份。
步驟二:打開文件,選擇「另存為」。
步驟三:編碼格式從「UTF-8"切換到「GBK」(默認)。保存即可。
⑸ 高分求一個utf-8轉gbk的方法 Java
這要看它提供的介面是怎樣的
new String(byte[],String)
要轉碼,這個就足夠了,不用這個還能有啥樣的。用這個不會錯的
1。先確保下你成功的轉過來了,最好能逐行測試,每句完後都看下格式,最好能寫個測試代碼把每句完後的格式都輸出下看看,字元串和格式都要分別取來看
2。確保你的utfStr是UTF8的,確保它提供的介面是按GBK接收的。
只要這兩點滿足應該不會有問題的,多檢查下吧
再注意下看是不是MAS的版本不同造成的
⑹ java中UTF-8轉GBK為什麼不會出現中文亂碼
Java中UTF-8轉GBK之所以不會出現中文亂碼,是因為UTF-8編碼為兼容性最大的字元集編碼,它本身就支持中文字元。
Java代碼轉碼範例:
String s = new String(ss.getBytes(),"GBK");
當你的內容本來就是正常的中文字元時,通過上面的語句轉為GBK編碼是不會有任何問題的,但如果你在轉碼之前的字元不是正確的中文字元,或者不是支持中文字元的字元集,那可能就會出現亂碼問題。
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字元編碼,又稱萬國碼。由Ken Thompson於1992年創建。現在已經標准化為RFC 3629。UTF-8用1到6個位元組編碼UNICODE字元。用在網頁上可以同一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)。
在Java開發中,特別是web開發,亂碼是一種很常見而且很頭疼的問題,這常常是由於頁面端、服務端、資料庫等幾處所使用的字元不一致所致,故開發中,保持編碼一致, 往往能減少由於亂碼而帶來的時間浪費,是一件非常重要的事情。