❶ java使用unicode為默認編碼是什麼意思
java初學者都會接觸到一個概念,既java的默認編碼是uincode,但書上也就出現這句話而已,究竟是什麼意思就沒再說。其實對於一個程序員來說,一個平台的編碼方式是不用了解的,因為這是他內部處理字元的方式,和我們頂層設計程序是沒有多大關系(如果真要說有關系的話,一個就是你對這個平台的熟悉程度,另一個就只能是你要處理的字元奇葩到要考慮編譯器有沒有包括這個字元)。但這並不是指我們在編程的時候完全不用考慮編碼問題,恰恰相反,編碼問題是跨系統交流的基本。
那java哪裡會用到編碼問題呢?最常見的是流,下面有兩個例子。1.在linux下用java創建了一個文件(這里默認代碼里沒有指定編碼),裡麵包括英文和中文,然後在windows下同樣用java讀取這個文件,並輸出,結果中文出現了亂碼;2.android手機和電腦的兩個java程序進行類似qq的信息交流,中文都是亂碼。疑惑來了,java不是跨平台嗎,而且默認編碼就是unicode,為什麼會有編碼? 正如上面所說,java的系統編碼是管理內部變數等信息的,是統一不能變的,但上面兩個例子出現亂碼的原因在於這些字元信息是從外界讀取的,編碼方式直接影響到字元的顯示,比如gbk一個字元是1或2個位元組,中文是2個,而utf8是1到4個位元組不定,中文是3個,utf16是2個位元組固定不變,所以很明顯了,同樣位元組數的源信息可以每2個或者每3個位元組表達一個中文,不同編碼當然不同了,而且即使gbk和utf16都是兩個位元組表示一個中文,同樣的二進制也對應不同的字元。所以從外部讀取到這些byte信息後,就要指定編碼,比如new
String(byte[],charset),當然,也可以在構建流的時候就指定,像new
InputStreamReader(InputStream,charset)等,但像BufferedReader等沒有相應的構造函數,就只能把上面的InputStreamReader作為參數了。
總結:
1.String和流(包括控制台的輸出輸入)的默認編碼是根據系統而定,即jvm假設這些信息是當前系統創建的,windows默認中文是gbk,linux和mac是utf8(這里又來了,utf8和unicode是什麼意思,簡單地說,unicode是把每個字元和一個唯一的二進制碼對應的標准,而utf是unicode
transformation
format,即如何表示每個唯一的二進制碼,utf8,utf16和utf32是不同的編碼方式);
2.IDE設置的編碼方式用於存取java源文件,對於在不同系統平台上共享代碼很重要;
3.java編譯器採用utf8,即class文件的存儲是用utf8,因為相對於utf16,utf8在處理英文佔用內存小,而程序大部分都是英文;
4.jvm運行時的編碼方式是utf16,即jvm用utf8從class文件讀取程序後再轉化為utf16編碼的字元串,因為utf16是2個位元組,統一的長度更方便jvm申請數組等操作;
5.網頁大部分是用utf8編碼的,在html頭幾行有charset的信息,在對下載下來的網頁進行解析時,要注意編碼,谷歌網路在對搜索結果的解析時也是用utf8的,所以在涉及到網路時編碼問題非常重要,本人曾經栽得很慘,當然了,誰叫windows的編碼不是utf8;
6.不知大家有沒有經歷過,如果編碼弄錯了,一般只有中文會出現亂碼,而中文後面的英文是正確的,不合理啊,這不是類似多骨諾米牌嗎,一個錯了,後面不是全倒嗎。所以別小看那些制定編碼的專家,像utf8每個位元組的前幾位都用來表示一些信息,不同位元組還不一樣,而utf16也有,所以弄出了utf16le和utf16be
❷ utf-8和unicode編碼怎麼在JAVA里實現轉換
utf-8是unicode的一種。自己閱讀相關資料把什麼是unicode
搞清楚。再高搞清楚java的utf-8/16怎麼處理的
❸ java編碼問題 如何從unicode 轉utf8,冰天雪地跪求
部首筆畫
部首:灬 部外筆畫:8 總筆畫:12
五筆86:WYOU 五筆98:WYOU 倉頡:OGF
筆順編號:324111214444 四角號碼:20331 Unicode:CJK 統一漢字 U+7126
基本字義
1.
物體經火燒變成黑黃色並發硬、發脆:燒~。~土。~頭爛額。
2.
煩躁,著急:~急。~慮。~灼。~躁不安。
3.
酥,脆:~脆。~棗。
4.
喻乾燥到極點:唇~口燥。~枯。~裂。~渴。
5.
一種質硬、多孔、發熱量高的固體燃料:~炭。~煤。~煉。
6.
姓。
❹ java中unicode字元串轉化為utf8的方法
你試試這個構造方法
String(byte[] bytes, String charsetName)
String s = "флэш";
String s2 = new String(s.getBytes("原編碼方式"),"UTF-8");
❺ java怎麼把把字元轉成utf-8
java不同編碼之間進行轉換,都需要使用unicode作為中轉。
以utf-8轉gbk為例,示例代碼如下:
String t = "這是一個字元串aaa111";
String utf8 = new String(t.getBytes( "UTF-8"));
System.out.println(utf8);
String unicode = new String(utf8.getBytes(),"UTF-8");
System.out.println(unicode);
String gbk = new String(unicode.getBytes("GBK"));
System.out.println(gbk);
❻ java中 unicode編碼轉換成UTF-8,請前輩指點,謝謝
看來你手裡有這個代碼嘍。
我從來沒仔細研究過具體如何轉換的,只是知道,如果java里String str = 什麼什麼; 能夠取到str值了,那麼此時的str一定為unicode了,轉換的時候一般用在輸出上。
&是按位與,就是每一個二進制位分別對應進行與操作。
|是按位或,就是每一個二進制位分別對應進行或操作。
❼ java怎麼把UTF-8字元轉化成unicode
我哥知道 vvvvv
❽ 怎麼用java把一個字元串進行utf8編碼
String text = 「字元串」;
byte[] b_utf8 = text.getBytes("UTF-8"); //utf-8
byte[] b_iso88591 = text.getBytes("ISO8859-1"); //iso8859-1
byte[] b_gbk = text.getBytes("GBK"); //gbk
string unicode = getUnicode(text);//unicode
public static String getUnicode(String source) {
String result = "";
for (int i = 0; i < source.length(); i++) {
result += "\u"+Integer.toHexString((int) source.charAt(i));
}
return result;
}