我要从网站上检索这种[类型]字符串:
{"title":"En Loz\u00e8re, les entreprises sont incit\u00e9es \u00e0 passer \u00e0 la fibre","author":"Fran\u00e7ois Le Gall","date":...
我想要一个像这样的对象:
myObject{
String title = "En Lozère, les entreprises sont incitées à passer à la fibre";
String author = "François le Gall";
...
}
这是我在java中检索我的String的方式:
String myJsonString = "";
try{
URLConnection conn = new URL("http://www.ariase.com/webservices/getArticle.php?id=3019").openConnection();
InputStream in = conn.getInputStream();
Scanner s = new Scanner(in);
s.useDelimiter("\\A");
while (s.hasNext())
myJsonString += s.next();
s.close();
in.close();
} catch(SocketTimeoutException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); }
RssJsonObject myParsedJsonObject = RssJsonObject.parseJson(myJsonString);
这是一个Json对象,我必须解析,没问题,但我有像\u00e0
这样的特殊字符,我不知道如何替换......
我可以做几十个replaceAll("\u00e0", "à");
但是,有没有任何预制功能呢?
我也可以编辑发送给我这个字符串的php页面,也许我已经忘记了任何url_encode
或者其他东西,我在php上很糟糕。
这是我的PHP代码:
$query = "SELECT * FROM SITE.rssitem WHERE NEWSID = '".$newsId."'";
$eligibiliteDB->request($query);
$answer = $eligibiliteDB->first();
$tab = array(
"title" => strip_tags($answer['TITLE']),
"author" => strip_tags($answer['AUTHOR']),
"date" => strip_tags($answer['DATE']),
"img" => strip_tags("http://www.ariase.com/fr/news".$answer['MINIATURE']),
"description" => strip_tags($answer['DESCRIPTION']),
"content" => strip_tags($answer['FULLDESCRIPTION'].' '.$answer['CONCLUSION'])
);
echo json_encode($tab);
编辑:
上面的我的Java代码。
我不知道我的错误是来自java还是php部分。
我知道所有这些编码的东西,不太了解它,只知道我不想在我的应用程序中看到\u00e8
而是'è'! :)
答案 0 :(得分:0)
在Java源代码中,对于Unicode字符U + 00E0 LETTER A-A_GAUCHE,转义"\u00e0"
实际上与"à"
相同。您可能还会在JavaScript和JSON数据中找到此类转义。将其作为JSON对象读取应该为String对象提供正确的Unicode à
。
由于某种原因你应该得到6个字符\u00e0
,那么应该采取不同的方式。
但是,您也可以继续使用Apache commons中的类StringEscapeUtils将其转换回来。
String s = "\\u00e0"; // How one would represent the six chars \,u,0,0,e,0.
s = StringEscapeUtils.unescapeJava(s);
由于in.close()
也关闭了s.close()
,因此不需要BTW in
。