簡體   English   中英

Java 不解碼傳遞的字符串(使用 unicode)

[英]Java doesn't decode passed string (with unicode)

我正在創建字符串(通過輸入字符串和一些預定義文本的串聯),將其保存到數據庫中並將其傳遞給以下方法:

public String decodeUTF(String inputString) {
    byte[] bytes =  StringUtils.getBytesUtf8(inputString);
    return StringUtils.newStringUtf8(bytes);
}

當我打電話(並將結果發送到前台(android))時:

decodeUTF("Emoji example: \uD83D\uDE04");

它有效(顯示笑臉)。

當我打電話

decodeUTF(sameStringFromDb);

它在沒有轉換的情況下傳遞整個字符串。

在 Java 源代碼中, \?是一種轉義碼:編譯器將其替換為一個代碼單元

如果您在數據庫中看到\? ,則它不是轉義碼,而是六個單獨字符'\\' 'u' 'D' '8' '3' 'D' 的序列。

解決此問題並確保獲得相同輸出的正確方法是什么?

您必須問的一件事是為什么文本“\?”首先到達數據庫。 存儲在數據庫中的文本不應以這種方式被破壞。 聽起來數據輸入處存在錯誤。

如果沒有辦法修復數據輸入,並且您想像 Java 編譯器那樣用單個字符替換文本“\?”,這已經在其他問題中涵蓋,請參見例如將轉義的 Unicode 字符轉換回實際性格

暫無
暫無

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

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