2013-06-26 38 views
2

我正在编写一个从另一个服务器获取数据的Java服务器。不幸的是,它所抛出的字符串的一部分不能被程序“解析”。 System.out.print将其打印为问号?用Java解析地狱的符号

这个可怜的问号符号不能被我的客户端的JSON解析器解析。有谁知道我可以如何删除它?

尝试str.replace?符号不起作用。

+0

我们可以看到打印符号的代码吗?你使用“Char(int)”吗? – JREN

+1

您从其他服务器收到的数据是否使用其他语言格式化?您可能需要使用适当的字符集。 – asgs

+0

你知道各种符号的编码吗? – Andremoniy

回答

2

好这个工作对我来说:

stringName.replaceAll("[^\\x00-\\x7F]", ""); 

这是在计算器一些答案,但现在我无法找到它。

+0

不是很干净,但只要你只需要US-ASCII字符就可以了。任何非英文字符都以这种方式删除。干净的方式更像Dariusz的答案,但你必须以某种方式找出这个字符集。 –

4

它看起来像一个编码问题。您的应用程序使用一种编码,而服务器使用其他编码。

使用Charset类将是你的答案。将接收到的数据转换为字符串时使用它。很可能你必须在Reader的构造函数中指定它,但我不能说没有任何代码。

这里是链接到相应的javadoc:InputStreamReader(InputStream, Charset)