❶ java如何把string轉為utf-8
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;
(1)java編碼格式utf8擴展閱讀:
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填補。
❷ java實現將文件格式轉換為UTF-8
問題描述不知道是不是需要改這個:
文件編碼轉換方法:ant
build.xml
代碼
<project name="encoding" default="build">
<target name="build">
< todir="e:/output" outputencoding="GBK">
<fileset dir=".">
<include name="**/*.html"/>
</fileset>
</>
</target>
</project>
先把源代碼全部用GBK格式拷貝到e:/output,然後再把output中的所有文件拷貝到原先的地方就可以。
html內容顯示編碼:
<meta http-equiv="content-type" content="text/html; charset=「utf-8" />
❸ java如何判斷編碼是否是utf8編碼
UTF-8編碼規范及如何判斷文本是UTF-8編碼的
UTF-8的編碼規則很簡單,只有二條:
1)對於單位元組的符號,位元組的第一位設為0,後面7位為這個符號的unicode碼。因此對於英語字母,UTF-8編碼和ASCII碼是相同的。
2)對於n位元組的符號(n>1),第一個位元組的前n位都設為1,第n+1位設為0,後面位元組的前兩位一律設為10。剩下的沒有提及的二進制位,全部為這個飢銷符號的unicode碼。
根據以上說明下面給出一段java代碼判斷UTF-8格式
/**
*UTF-8編碼格式判斷
*
*@paramrawtext
*需要分析的數據
*@return是否為UTF-8編碼格式
*/
publicstaticbooleanisUTF8(byte[]rawtext){
intscore=0;
inti,rawtextlen=0;
intgoodbytes=0,asciibytes=0;
神肢鉛//MaybealsouseUTF8ByteOrderMark:EFBBBF
//
rawtextlen=rawtext.length;
for(i=0;i<rawtextlen;i++){
if((rawtext[i]&(byte)0x7F)==rawtext[i]){
//最高位是0的ASCII字元
asciibytes++;
//IgnoreASCII,canthrowoffcount
}elseif(-64<=rawtext[i]&&rawtext[i]<=-33
游好//-0x40~-0x21
&&//Twobytes
i+1<rawtextlen&&-128<=rawtext[i+1]
&&rawtext[i+1]<=-65){
goodbytes+=2;
i++;
}elseif(-32<=rawtext[i]
&&rawtext[i]<=-17
&&//Threebytes
i+2<rawtextlen&&-128<=rawtext[i+1]
&&rawtext[i+1]<=-65&&-128<=rawtext[i+2]
&&rawtext[i+2]<=-65){
goodbytes+=3;
i+=2;
}
}
if(asciibytes==rawtextlen){
returnfalse;
}
score=100*goodbytes/(rawtextlen-asciibytes);
//Ifnotabove98,
//Allowsforsome(few)badformedsequences
if(score>98){
returntrue;
}elseif(score>95&&goodbytes>30){
returntrue;
}else{
returnfalse;
}
另外對於正規的文本文件來說UTF-8的文件開頭有3個位元組來標識該文本是UTF-8編碼
EF,BB,BF三個位元組
但通常不採用以下這種方案因為許多文件不標准
(byte[]b)
{
if(b!=null&&b.length>3)
{
byteutf8[]={(byte)0xEF,(byte)0xBB,(byte)0xBF};
if((b[0]==utf8[0])&&(b[1]==utf8[1])&&(b[2]==utf8[2]))
returntrue;
}
returnfalse;
}
❹ java輸出utf8編碼
給你一點提示:
import java.net.URLEncoder;
yourNewString = URLEncoder.encode(yourString, "UTF-8");
同樣,解碼就把以上都變成Decoder
我這個是內置包,最簡單的方法了,你先試一下吧
❺ java 怎麼gbk轉碼utf-8
方法一:
思路:先轉為Unicode,然後轉為GBK
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);
方法二:
publicstaticvoidmain(String[]args){
Stringstr="字元串編碼轉換";
try{
byte[]temp=str.getBytes("utf-8");//這里寫原編碼方式
byte[]newtemp=newString(temp,"utf-8").getBytes("gbk");//這里寫轉換後的編碼方式
StringnewStr=newString(newtemp,"gbk");//這里寫轉換後的編碼方式
System.out.println(newStr);
}catch(UnsupportedEncodingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
❻ java怎麼設置為utf-8的編碼
要讓一個
Java
源文件打開時編碼格式為
UTF-8,需要做2件事情:
1)設置Java
源文件的默認編碼格式為UTF-8;
2)設置workspace的編碼格式為UTF-8。
相應設置如下:
設置
Java
源文件的默認編碼格式為
UTF-8
在
Windows->Preference
頁面中,選擇
General->Content
Types
在右邊的框中,選擇
Text->Java
Source
File,將下面的
Default
Encoding
改為
UTF-8
設置
workspace
的編碼格式為
UTF-8
在
Windows->Preference
頁面中,選擇
General->WorkSpace
選擇右側框中的
Text
File
encoding,改為
UTF-8
設置完這2處,默認打開
Java
源文件就是UTF-8編碼了。
❼ java中GBK編碼格式轉成UTF8,用一段方法實現怎麼做
java中GBK編碼格式轉成UTF8編碼格式的方法如下:
publicstaticvoidmain(String[]args)throwsThrowable{
StringerrStr="errStr";
System.out.println(recover(errStr));
}
publicstaticStringrecover(Stringstr)throwsThrowable{
returnnewString(str.getBytes("GBK"),"UTF-8");
}
其中errStr就是亂碼字元串,按照相反的順序在編碼蘆喊(用gbk)、解碼(用utf-8)回去,就能得到正確的字元串.
GBK、UTF-8是一種「編碼格式」,是用來序列化或存儲「編號(數字含族)」的一種「格式」;GBK和UTF-8都是用來序列化或存儲unicode編碼的數據的,但是分別是2種不同的格式; 除了格式不一樣之外,所關談嘩弊心的unicode編碼范圍也不一樣,utf-8考慮了很多種不同國家的字元,涵蓋整個unicode碼表,所以其存儲一個字元的編碼的時候,使用的位元組長度也從1位元組到4位元組不等;而GBK只考慮中文——在unicode中的一小部分——的字元,的編碼,所以算好了只要2個位元組就能涵蓋到絕大多數常用中文(2個位元組能表示6w多種字元),所以存儲一個字元的時候,所用的位元組長度是固定的;