2013-06-26 80 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)