[英]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.