java - 从互联网上读取数据时出现 Double\\

标签 java encoding character

我正在从外部服务器读取一些信息,我无法访问该服务器,并且不知道编码,并且在使用 í 等字符时遇到了一些问题。我所做的是使用下面的代码发出 POST 请求,然后解析它。

String response = "";
URL url = new URL(pURL);
URLConnection uc = url.openConnection();
if (sid!=null) uc.setRequestProperty("Cookie", sid);
uc.setDoOutput(true);
OutputStreamWriter osw = new OutputStreamWriter(uc.getOutputStream());
osw.write(request);
osw.flush();
InputStreamReader isr = new InputStreamReader(uc.getInputStream(), "UTF8");
BufferedReader br = new BufferedReader(isr);
String content;
while ((content = br.readLine())!=null){
  response += content;
}
br.close();
osw.close();

此时,如果我打印字符串,它会显示 \\,我的意思是,对于 í 而不是出现 \u00ed 出现\\\u00ed 如果我将响应字符串转换为字符数组,我可以看到它没有正确转换,而是分为 6 个字符 \\\\, u, 0, 0、e、d

我尝试更改 InputStreamReader 所在位置的编码,以替换字符和一些正则表达式,但没有任何效果。有人遇到这个问题并且可以帮助我吗?

非常感谢。

最佳答案

不确定为什么响应的格式如此,但您可以使用 StringEscapeUtils\u00ed 字符串转换为 í如下:

String input = "\\u00ed";
String unescaped = StringEscapeUtils.unescapeJava(input);
System.out.println(unescaped);

输出:

í

关于java - 从互联网上读取数据时出现 Double\\,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12109352/

相关文章:

linux - 如何在 ubuntu 下使用 nasm(程序集)从键盘读取单个字符输入?

java - android 从SD卡播放音乐

java - 在 Java 中启动和停止音乐文件?

java - 为什么我的 JFrame GUI 程序会出现运行时错误?

mysql - 这个网站是如何修复编码的?

.Net 8位编码

计算文本文件中的字符使用情况? C

Javascript Replace() 函数添加奇怪的字符

java - 在 json simple 中从 root 遍历 JSONObject

encoding - 如何在 Aptana Studio 3 中设置 UTF-8?