繁体   English   中英

Java字符串中的特殊字符处理

[英]Special characters handling in Java String

我必须从网站检索此[类型]字符串:

{"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对象,没问题,但是我有这样的特殊字符,我不知道该如何替换...

我可以做几十个replaceAll("\à", "à"); 但是,是否有任何预构建功能可以做到这一点?

我还可以编辑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。 而且我对所有这些编码东西都很了解,对它不太了解,只知道我不想在应用程序中看到而是“è”! :)

在Java源代码中,对于Unicode字符U + 00E0 LETTER A-A_GAUCHE,转义的"\à"实际上与"à"相同。 您可能还会在JavaScript和JSON数据中找到此类转义符。 将其读取为JSON对象应该为String对象提供正确的à

如果由于某种原因您得到6个字符则应该以其他方式进行处理。

但是,您也可以继续,并使用来自Apache commons的StringEscapeUtils类将其转换回去。

String s = "\\u00e0"; // How one would represent the six chars \,u,0,0,e,0.
s = StringEscapeUtils.unescapeJava(s);

in.close() BTW in.close() ,因为s.close()也会in关闭。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM