Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android utf-8 轉gb2312

android utf-8 轉gb2312

編輯:關於Android編程

android 通過EditText.getText().toString(),得到設備的名稱(devicename),android默認的編碼是utf-8,現在修改支持中文的名字,必須要對devicename字符串轉gbk或者gb2312,開始覺得字符串轉碼,本來就有接口:deviceName = new String(deviceName.getBytes(),"gb2312");這樣操作後打印是亂碼,通過http.post過去linux平台修改名字,還是亂碼,一直在想,怎麼android自帶字符串編碼轉換有問題麼,查了很多資料。

先查看編碼,用網頁post“哈哈”,用抓包工具,知道網頁發送gb2312編碼的”bac7bac7“,然後將devicename.getbyte()轉byte2hex,看是否跟網頁發送的字符一樣,發現是不一樣的。開始懷疑new String(deviceName.getBytes(),"gb2312")是不是不行,現在想的是怎樣將devicename編碼成”bac7bac7“,然後試了gbk,ios-8859-1等,都不行。


後來發現,這樣轉碼是不行的。

byte[] bb = null;

bb = deviceName.getBytes("gb2312");----》轉到16進制剛好是bac7bac7

deviceName = new String(bb,"gb2312"); ----打印呵呵,原來是要這樣轉碼的。


private static String byte2hex(byte [] buffer){
String h = "";

for(int i = 0; i < buffer.length; i++){
String temp = Integer.toHexString(buffer[i] & 0xFF);
if(temp.length() == 1){
temp = "0" + temp;
}
h = h + temp;
}

return h;

}

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved