我正在編寫一個從另一個服務器獲取數據的Java服務器。不幸的是,它所拋出的字符串的一部分不能被程序「解析」。 System.out.print
將其打印爲問號?
用Java解析地獄的符號
這個可憐的問號符號不能被我的客戶端的JSON解析器解析。有誰知道我可以如何刪除它?
嘗試str.replace
與?
符號不起作用。
我正在編寫一個從另一個服務器獲取數據的Java服務器。不幸的是,它所拋出的字符串的一部分不能被程序「解析」。 System.out.print
將其打印爲問號?
用Java解析地獄的符號
這個可憐的問號符號不能被我的客戶端的JSON解析器解析。有誰知道我可以如何刪除它?
嘗試str.replace
與?
符號不起作用。
好這個工作對我來說:
stringName.replaceAll("[^\\x00-\\x7F]", "");
這是在計算器一些答案,但現在我無法找到它。
不是很乾淨,但只要你只需要US-ASCII字符就可以了。任何非英文字符都以這種方式刪除。乾淨的方式更像Dariusz的答案,但你必須以某種方式找出這個字符集。 –
它看起來像一個編碼問題。您的應用程序使用一種編碼,而服務器使用其他編碼。
使用Charset
類將是你的答案。將接收到的數據轉換爲字符串時使用它。很可能你必須在Reader
的構造函數中指定它,但我不能說沒有任何代碼。
這裏是鏈接到相應的javadoc:InputStreamReader(InputStream, Charset)
我們可以看到打印符號的代碼嗎?你使用「Char(int)」嗎? – JREN
您從其他服務器收到的數據是否使用其他語言格式化?您可能需要使用適當的字符集。 – asgs
你知道各種符號的編碼嗎? – Andremoniy