1. 程式人生 > >隨便發發,java gb2312與中文字元轉換,以及中文和Unicode的轉換

隨便發發,java gb2312與中文字元轉換,以及中文和Unicode的轉換

/**
     * 中文轉Unicode
     * @param gbString
     * @return
     */
   public static String UnicodeEncoding(String gbString) {   //gbString = "測試"  
          char[] utfBytes = gbString.toCharArray();   //utfBytes = [測, 試]  
          String unicodeBytes = "";     
          for (int byteIndex = 0; byteIndex < utfBytes.length; byteIndex++) {     
              String hexB = Integer.toHexString(utfBytes[byteIndex]);   //轉換為16進位制整型字串  
                if (hexB.length() <= 2) {     
                    hexB = "00" + hexB;     
               }     
                unicodeBytes = unicodeBytes + "\\u" + hexB;     
          }        
          return unicodeBytes;     
    }
   
   /**
    * Unicode轉中文   
    */
   public static String decodeUnicode( String dataStr) {     
      int start = 0;     
      int end = 0;     
      StringBuffer buffer = new StringBuffer();     
      while (start > -1) {     
          end = dataStr.indexOf("\\u", start + 2);     
          String charStr = "";     
          if (end == -1) {     
              charStr = dataStr.substring(start + 2, dataStr.length());     
          } else {     
              charStr = dataStr.substring(start + 2, end);     
          }     
          char letter = (char) Integer.parseInt(charStr, 16); // 16進位制parse整形字串。     
          buffer.append(new Character(letter).toString());     
          start = end;     
      }     
      return buffer.toString();     

   } 

/**
    * gb2312編碼
    */
   public static String gb2312decode( String string) throws UnsupportedEncodingException{
       byte[] bytes = new byte[string.length() / 2];
       for(int i = 0; i < bytes.length; i ++){
           byte high = Byte.parseByte(string.substring(i * 2, i * 2 + 1), 16);
           byte low = Byte.parseByte(string.substring(i * 2 + 1, i * 2 + 2), 16);
           bytes[i] = (byte) (high << 4 | low);
       }
       return new String(bytes, "gb2312");   
   }
   
   /**
    * gb2312解碼
    */
   public static String gb2312eecode(String string) throws UnsupportedEncodingException{   
       StringBuffer gbkStr = new StringBuffer();  
       byte[] gbkDecode = string.getBytes("gb2312");  
       for (byte b : gbkDecode) {  
           gbkStr.append(Integer.toHexString(b & 0xFF));  
       }
       return gbkStr.toString();
   }

相關推薦

隨便發發,java gb2312中文字元轉換以及中文Unicode轉換

/**      * 中文轉Unicode      * @param gbString      * @return      */    public static String UnicodeEncoding(String gbString) {   //gbStri

CStringChar*的轉換以及中文字元寫入檔案檔案的讀寫等

工作需要,碰到多個檔案讀取和型別轉換的問題,記錄下來。 ps:都是網上搜集來的,只是查的太多,找不到具體連結了,只好不列出處。再次感謝! 1、CString與char*的轉換 分兩種情況,一種是工程設定的是不使用Unicode編碼,這樣的比較簡單,用(LPSTR)(LPCT

Java實現阿拉伯數字轉換中文大寫數字以及中文大寫數字到阿拉伯數字的轉換

學習王曉華老師的《演算法的樂趣》一書中第四章之後,用Java重寫並實現這一功能。 該文章是在學習完該章之後的一個學習總結,以供自己複習使用。 由於現在剛開始學習Java,為了熟悉Java的變成規範,因此,用Java實現這一功能。 public class NumberToC

Java/Android 日期格式SimpleDateFormat轉換以及DateCalendar的使用

獲取時間、日期的兩種方式:Date  \ Calendar一、使用Date類1、配合SimpleDateFormat進行轉換。例如。SimpleDateFormat sdf = new SimpleDa

CString型別轉換字串操作UNICODE、ANSI字符集

一.CString與LPCWSTR     兩者的不同:LPCWSTR 是Unicode字串指標,初始化時串有多大,申請空間就有多大,以後存貯若超過則出現無法預料的結果,這是它與CString的不同之處。而CString是一個串類,記憶體空間類會自動管理。     CString轉換成LPCWSTR   

位元組流字元位元組流字元流的使用哪個多? java 讀寫操作大檔案 BufferedReaderRandomAccessFile

一 首先我們要知道 在程式中所有的資料都是以流的方式進行傳輸或儲存的   而流有兩種 位元組流用來處理位元組或二進位制物件 字元流主要用來處理字元或字串,一個字元佔兩個位元組 而上一篇的java 讀寫操作大檔案 BufferedReader和RandomAccessFile Buf

黑馬程式設計師——java的IO之字元位元組流,轉換

------- android培訓、java培訓、期待與您交流! ---------- 前言:通過觀看畢向東老師的java基礎視訊,查漏補缺,將一些自己掌握的還不牢固的知識寫出來,希望和大家交流分享。 1.IO概述 1、相關概念:IO:即Input和Output的縮寫。

java菜鳥的回爐之旅之五---字元型別、布林型別型別轉換

Char和字串入門: 1、char型別用來表示在Unicode編碼集中的字元,用單引號表示 2、Unicode是通用字符集,一個字元站兩個位元組,表示範圍是0-65535,基本上地球上的所有字元都夠使用了。 3、Char裡面的轉義字元:使用反斜槓\來表示轉義,如要表示一個單

二進位制流 字元字符集,字元字元編碼

二進位制流與字元流 1.位和位元組都是單位,字元是看到的結果,解碼編碼則是固定的規則 2.在計算機儲存介質中存放的實際是二進位制的位元流 3.二進位制資料只是01資料 要顯示成我們所看到的字元要經過字元編碼以及對應的字符集,字元庫定位才能 找到這個二進位制所表達的字元 字符集

java給圖片新增文字水印以及docker容器新增中文字型支援

發現雖然簡單,但是水印內容通過編碼拼接在圖片地址後面,每次訪問都要加上,如果要儲存下來還需要自己存第二遍有水印的圖。可是我們並不需要沒有水印的原圖,於是決定通過程式碼新增,更自由。 程式碼如下: /** * 新增文字水印 * @param inpu

java中的BigDecimalString的相互轉換intString的型別轉換Integer類String相互轉換

一: /*由數字字串構造BigDecimal的方法 *設定BigDecimal的小數位數的方法 */ 注:BigDecimal在資料庫中存的是number型別。 import java.math.BigDecimal; //數字字串 String StrBd="1048576.1024"; /

C#中關於從剪貼簿中讀取HTML格式含中文字元會出現的問題解決方法

通過如下程式碼在剪貼簿中獲取含HTML格式的文字時發現當內容出現漢字的時候會有亂碼 if (Clipboard.ContainsText(TextDataFormat.Html)) textBox1.T

kotlin學習筆記:object關鍵字介紹java中的靜態變數靜態方法的實現以及@JvmField@JvmStatic的使用

在java中,靜態變數和靜態方法是我們經常需要用到的東西,但是我們在kotlin中,並不能找到static關鍵字。其實目前在kotlin中,也的確是static概念的,那麼我們該如何在kotlin中實現靜態變數和靜態方法呢?這時就要用到kotlin中的obje

(org.json.JSONObject類)java使用JSONObject讀取json檔案出現中文亂碼

出現問題的程式碼 //從json檔案中讀取資料 StringBuffer stringBuffer = new StringBuffer(); try { BufferedReader bufferedReader = new BufferedReader(ne

指標陣列 字元指標字串字元陣列的區別

指標和陣列是不相等的,把一個數組名作為一個引數傳遞給函式時陣列名就是指向第一個元素的指標, 在大多數表示式中陣列名的值是指向第一個元素的指標(有兩個例外,一個是sizeof返回的是整個陣列 的位元組數

java程式碼寫xml檔案時出現中文亂碼的解決方法

phoneElement.addAttribute("name", "家庭電話");emailElement.setText("[email protected]");try {/*** 特別注意:* * java中有Writer類繼承下來的子類沒有提供編碼格式處理,所以dom4j也無法歲輸出的

Android JSON資料格式的解析簡單物件、帶泛型的ListMap的轉換以及GSON的使用

首先,這裡要先說一下 JSON 的語法。 1、使用 JSON 語法建立物件         如圖,建立 object 時,總是以 “{” 開始,以 “}” 結束,物件的每個屬性和屬性值之間以英文冒號 “:” 隔開,多個屬性定義之間以英 文逗號 “,” 隔開。語法格式如下:

關於單位“緹”“畫素”的轉換以及其他單位(例如:釐米)之間的轉換

【概念】緹(Twips)是用來展示空間或定義在紙張,或其他要列印的或在計算機顯示器上顯示區域上物體的量度。1緹等於1/1440英寸或1/567釐米。也就是說1英寸中有1440緹或1釐米中有567緹。1緹等於傳統列印量度點的二十分之一。1點近似等於1/72英寸。   許多計算

關於java介面、父類子類之間呼叫強制轉換的關係

如果使用介面的引用去方位它的實現類的方法,那麼一定只能訪問實現類中介面所定義的那個方法,其他的變數和方法是無法訪問的 如果使用父類的引用去訪問子類的方法例如,A是個父類,b繼承了A,那麼如果A did= new b();那麼did只能訪問A類和b類共有的部分,如果想 訪問b

Java】i++++i的不同從底層效率上比較

以前書本、視訊和網站上但到i++和++i的區別,都是簡單,兩句話。 i++,先運算,後賦值 ++i,先賦值,後運算 舉個例子:(Java語言) int i = 1; System.out.print(i++); int j