Java:将编码字符转换为常规字符串

时间:2015-07-09 15:28:26

标签: java gwt encoding

我在Java中有这样的字符串: "\xd0\xb5\xd0\xbd\xd0\xb4\xd0\xbf\xd0\xbe\xd0\xb9\xd0\xbd\xd1\x82"

如何将其转换为人类可读的等效物?

注意: 实际上它是GWT,这个字符串来自python作为JSON数据的一部分。 JSONParser将其转换为完全不相关的内容,因此我希望能够在解析之前转换字符串。

我所谓的“人类可读”的预期应该是“ендойнт”(https://mothereff.in/utf-8#%D0%B5%D0%BD%D0%B4%D0%BF%D0%BE%D0%B9%D0%BD%D1%82

2 个答案:

答案 0 :(得分:0)

假设模式是" \ x00"形式的重复字符,其中00可以是[a-fA-F]中的任何数字或字母,你可以用类似的东西转换它这样:

String values = "\\xd0\\xb5\\xd0\\xbd\\xd0\\xb4\\xd0\\xbf\\xd0\\xbe\\xd0\\xb9\\xd0\\xbd\\xd1\\x82";
for (String val: values.split("\\\\x")) {
        if (val.length() > 0 ) System.err.print((char) Integer.parseInt(val, 16));
}

请注意,if条件是由第一个分隔符引起的:请参阅How to prevent java.lang.String.split() from creating a leading empty string?

答案 1 :(得分:0)

我不知道这只是我的控制台还是它无法正常工作,但你可以试试这段代码:

import java.io.UnsupportedEncodingException;

import javax.xml.bind.DatatypeConverter;

public class Utf8Decoder {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String url = "\\xd0\\xb5\\xd0\\xbd\\xd0\\xb4\\xd0\\xbf\\xd0\\xbe\\xd0\\xb9\\xd0\\xbd\\xd1\\x82";
        url= url.replaceAll("\\\\x", ""); //remove the \x on the string... 
        //it is now hex so let's parse it
        //convert to human readable text
        String result="";
        try {
            byte[] bytes= DatatypeConverter.parseHexBinary(url);
            result = new String(bytes, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            System.out.print("decoded value:"+result);
    }

}