Java 编解码字符串

Java 编解码字符串,java,encoding,character-encoding,Java,Encoding,Character Encoding,我在编码和解码字符串时遇到问题。如果我将字符串a编码为b,那么b编码为c意味着它可以正常工作。如果我转换finalstring意味着我得到了一些额外的字符。请查看我的输出,以获得您的澄清。我在输出的末尾增加了一个字符 这是我的密码 public class DoubleByteReverse { public static void main(String args[]) { try{ String a

我在编码和解码字符串时遇到问题。如果我将字符串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;
   }


}

您在
hexStringToByteArray
中所做的操作似乎无法正常工作,但是如果您更改
finalstring
的值作为该值
新字符串(“\u000E”+g+“\u000F”)
它将按预期工作。

尝试使用:

导入此>
导入javax.xml.bind.DatatypeConverter

DatatypeConverter.printHexBinary(bytes)

将编码更改为UTF-8。@我仅使用UTF-8保存的piyush121我认为字符串
x
y
上的
0x
前缀不应该在那里,-
hexStringToByteArray
也在尝试将前缀转换为字节。只需使用
0E
0F
a value 基本形 
b value ã1áÃã° 
c value 基本形 
whole string ã1áÃã° 
output  基本形�