簡體   English   中英

如何在Java中解碼Unicode編碼?

[英]How to decode the Unicode encoding in java?

我的網站上有“搜索”,我們對查詢進行了框架並發送了請求,並且“響應”從供應商處以JSON的形式返回。 供應商對我們的網站進行爬網並從我們的網站捕獲數據並發送響應。 在我們的設計中,我們使用GSON將JSON轉換為Java對象。 我們在元數據中使用UTF-8作為字符集。

我遇到的情況是,響應有時會根據請求對特殊字符進行Unicode編碼。 瀏覽器以一種奇怪的方式呈現特殊字符的Unicode編碼。 我應該如何解碼這種Unicode編碼?

例如,對於特殊字符“ ndash”,我在響應中看到它被編碼為“ \\ u2013”

澄清Unicode和字符編碼之間的區別

統一碼

  • 是一個抽象概念,旨在識別所有字母( 當前 > 110 000)。

字符編碼

  • 定義如何通過字節序列來重新呈現字符
  • 一種這樣的編碼是utf-8 ,它使用1-4個字節表示Unicode字符

Java字符串 總是 UTF-16 因此,當您構造一個String時,可以使用以下String構造函數

new String(byte[], encoding)

第二個參數應該是客戶端發送字符時字符使用的編碼。 如果您不明確定義編碼,則將獲得默認的系統編碼,可以使用Charset.defaultCharset();進行檢查Charset.defaultCharset();

您可以在啟動JVM時手動將默認編碼設置為參數

-Dfile.encoding="utf-8"

盡管很少需要,但您也可以使用CharsetDecoder / CharsetEncoder

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM