2016-04-07 21 views
2

エンコードとデコードの文字列に問題があります。もし私が文字列aをbに符号化するならば、bをcにするとそれはうまく動作することを意味します。私がfinalstringを変換する場合、私はいくつかの余分な文字があることを意味します。あなたの説明のために私の出力を見てください。最後に余分な文字が出力されています。エンコードとデコードの文字列

ここに私のコードです。

public class DoubleByteReverse { 

    public static void main(String args[]) { 



     try{      
      String a = new String("基本形"); 

      System.out.println("a value "+a); 

      String b=new String(a.getBytes("Cp939"), "Cp500"); 

      System.out.println("b value "+b); 

      String c=new String(b.getBytes("Cp500"), "Cp939"); 

      System.out.println("c value "+c); 

      String g = new String("ã1áÃã°"); 

      String x = "0x0E"; 
      byte[] bytes = hexStringToByteArray(x); 
      String st = new String(bytes,"Cp500"); 
      //System.out.println(st); 

      String y = "0x0F"; 
      byte[] bytes1 = hexStringToByteArray(y); 
      String en = new String(bytes1,"Cp500"); 
      //System.out.println(en); 


      String finalstring =new String(st+g+en); 

      System.out.println("whole string "+finalstring); 

      String output=new String(finalstring.getBytes("Cp500"),"Cp939"); 

      System.out.println("output "+output); 

       } 
      catch (UnsupportedEncodingException e){} 
     } 


    public static byte[] hexStringToByteArray(String hex) { 
     int l = hex.length(); 
     byte[] data = new byte[l/2]; 
     for (int i = 0; i < l; i += 2) { 
      data[i/2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4) 
           + Character.digit(hex.charAt(i+1), 16)); 
     } 
     return data; 
    } 


} 

出力:

a value 基本形 
b value ã1áÃã° 
c value 基本形 
whole string ã1áÃã° 
output 基本形� 
+0

変更エンコーディング。 – piyush121

+0

@ piyush121私はUTF-8だけを使用して保存しました –

+0

あなたの文字列 'x'と' y'のプレフィックスはそこにあってはいけないと思います - 'hexStringToByteArray'はプレフィックスをバイトに変換しようとしています。 '0E'と' 0F'だけを使用してください –

答えて

1

何をhexStringToByteArrayで行うことは正しく動作していないようですが、あなたは、この値new String("\u000E" + g + "\u000F")ためfinalstringの値を変更した場合期待どおりに動作します。

+0

Nicolasさん、ありがとうございます。 –

0

は、使用してみてください:

インポートUTF-8に、この>import javax.xml.bind.DatatypeConverter; DatatypeConverter.printHexBinary(bytes)

関連する問題