編輯:關於Android編程
1.要解決中文亂碼問題,首先得了解什麼是字符編碼
計算機要處理各種字符,就需要將字符和二進制內碼對應起來,這種對應關系就是字符編碼。要制定字符編碼首先要確定字符集,並將
字符集內的字符排序,然後和二進制數字對應起來,根據字符集內字符的多少,確定幾個字節來編碼。
2.常用的字符編碼
ASCII 編碼是目前計算機中常用的最廣泛地 字符集及其編碼。ISO-8859-1可以表示的是西歐語言,看起來很單一,但是由於是單字節編碼,與計算機最基礎的表示單位一致,所以在很多時候,仍舊使用ISO-8859-1編碼來表示,而且在很多協議上默認使用這種編碼。Unicode編碼(統一碼),通常所說的UTF-8就是Unicode編碼的實現方式。GB2312字集是簡體字集;BIG5字集是台灣繁體字集;GBK字集是簡繁字集;GB18030
是國家制定的一個強制性大字集標准;Linux系統默認的使用的是ISO-8859-1編碼,。現在的PC平台必須支持GB18030,對嵌入式產品暫不作要求。所以手機、MP3一般只支持GB2312。
3.網絡傳輸產生中文亂碼原因
網絡通信中,產生亂碼的原因主要是通信過程中使用了不同的編碼方式:服務器中的編碼方式,傳輸過程中的編碼方式,傳輸到達終端設備的編碼方式。因此在傳輸過程中就需要至少兩次編碼轉換:首先從服務器編碼轉為網絡編碼,再從網絡編碼轉為終端設備編碼。在轉換的過程中出現任何情況都可能出現編碼混亂。
4.處理中文亂碼問題常用兩種方式解決
(1)由於大部分終端設備都支持Unicode字符集,所以在連接網頁時,我們希望網頁數據在網絡傳輸時使用UTF-8方式傳輸,我們就可以將UTF-8轉化為Unicode字符集。下面我們將通信過程中得到的流轉化為字節,然後再將字節按GB2312 的方式進行轉換得到字符串。
InputStream is = conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is); byte bytearray[] = new byte[1024]; int current= -1; int i=0; while((current=bis.read())!=-1) { bytearray[i] =(byte) current; i++; } resultData = new String (bytearray,"GB2312");//網絡中以字節想形式默認為UTF-8進行編碼,以GB2312顯示到終端
通過上面的轉換,“resultData”字符串便可以顯示中文效果了。
(2)另一種方式是書記在傳遞的過程中使用ISO-8859-1字符集,這樣就是直接使用了ASCII編碼方式,當然在傳遞到終端設備時,需要將其數據反轉才能夠正常的顯示。下面我們將一個字符串按ISO-8859-1字符集進行轉換為gbk,代碼如下:
public static String formatStr(String str){ if(str==null || str.length()==0){ return ""; } try{ return new String (str.getBytes("ISO-8859-1"),"gbk"); //先在網絡中以ISO-8859-1進行編碼,再以gbk輸出到終端 } }
總結:歸根結底,解決中文亂碼只需要兩個步驟:
·使用getBytes("編碼方式");來對漢字進行重編碼,得到它的字節數組。
·再使用new String (Bytes[],"解碼方式");來對字節數組進行相應的解碼。
Android開發中,大部分控件都有visibility這個屬性,其屬性有3個分別為“visible ”、“invisible”、“gone”。主要用來設置控制控件的顯示
單例模式,可以說是GOF的23種設計模式中最簡單的一個。這個模式相對於其他幾個模式比較獨立,它只負責控制自己的實例化數量單一(而不是考慮為用戶產生什麼樣的實例),很有意思
一、首先說明:藍牙通信必須用手機測試,因為avd裡沒有相關的硬件,會報錯!好了,看看最後的效果圖:二、概述:1.判斷是否支持BluetoothBluetoothAdapt
1.Android程序的基本組織結構:1)src: src目錄是放置我們所有Java代碼的地方2)gen: 自動生成的,主要有R.java,項目中添加的任何資源都會在其中