将字符串从 ansi/十六进制字符串转换为 unicode

问题描述 投票:0回答:1

我对字符串转换器有疑问

我从url读取内容

http://suggestqueries.google.com/complete/search?client=firefox&hl=us&ds=yt&q=spinner

控制台中的结果是

[“微调器”,[“微调器”,“微调器技巧”,“微调器坐立不安”,“微调器越南”,“微调器技能”,“微调器玩具”,“微调器坐立不安玩具”,“微调器 vn”,“微调器手” ","spinner vi\u1EC7t nam"]]

它包含字符串“spinner vi\u1EC7t nam”,但是当通过操作系统读取它时,我看到“việt nam”

问题是我如何读取 api 的内容以查看结果为“việt nam”。

下面是我的原始代码

```

    URL url = new URL("http://suggestqueries.google.com/complete/search?client=firefox&hl=us&ds=yt&q=spinner");
    URLConnection urlConnection = url.openConnection();
    urlConnection.connect();
    InputStream inputStream = urlConnection.getInputStream();

    InputStreamReader reader      = new InputStreamReader(inputStream);
    BufferedReader bufferedReader = new BufferedReader(reader);
    String line;
    while((line=bufferedReader.readLine()) != null){
        System.out.println(line);
    }
    bufferedReader.close();
    reader.close();

```

java string unicode urlencode
1个回答
0
投票

试试这个。

static final Pattern UNICODE = Pattern.compile("\\\\u([0-9a-fA-F]{4})");

static String decodeUnicodeEscape(String s) {
    Matcher m = UNICODE.matcher(s);
    StringBuffer sb = new StringBuffer();
    while (m.find())
        m.appendReplacement(sb,
            String.valueOf((char)Integer.parseInt(m.group(1), 16)));
    m.appendTail(sb);
    return sb.toString();
}

System.out.println(decodeUnicodeEscape(" vi\\u1EC7t nam"));

结果

 việt nam
© www.soinside.com 2019 - 2024. All rights reserved.