![](/img/trans.png)
[英]Java - Count exactly 60 characters from a string with a mixture of UTF-8 and non UTF-8 characters
[英]How to get exactly UTF-8 string in java?
不知道你從哪里得到初始字符串,但是 Java 內部使用 UTF-16 來表示字符串。
當您需要serialize
字符串以通過連接傳輸、將其存儲在數據庫中、將其打印在文本文件中或在網頁上時,使用編碼是有意義的。
傳輸/存儲/打印的是所選編碼中字符串的字節數組表示。
通過連接、文件或數據庫接收/讀取值時也是如此。 您需要以正確的編碼解釋字節。
String 提供了一個getBytes()
方法,該方法使用平台默認編碼獲取 String 的表示形式,不推薦使用,因為它使代碼依賴於平台。 您可以使用字符串、 getBytes("UTF-8")
或字符集來提供編碼。 由於 Java 1.7, StandardCharsets
字符集 class 為必須支持 JVM 的編碼提供了快捷方式,因此您可以使用getBytes(StandardCharsets.UTF_8)
。
現在,您的代碼應該是這樣的:
String tmpStr= "ALMS_à¸à¸±à¹à¸à¸à¸à¸à¸¥à¸à¸à¸°à¹à¸à¸µà¸¢à¸.pdf";
String fileName = new String(tmpStr.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8);
但這不會產生您期望的字符串,只會獲得 tmpStr 的 UTF-8 字節表示,並創建一個讀取 UTF-8 字節表示的新字符串表示。 因此,在此之后您可以斷言tmpStr
等於filename
。
我懷疑您暴露的問題與您從哪里讀取 tmpStr 值以及首先使用什么編碼將其轉換為字符串有關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.