簡體   English   中英

在Java中,確保我得到UTF-8字符串的最佳方法是什么?

[英]In Java what is the best way to ensure that I'm getting UTF-8 strings?

從Servlet中的信標系統收集查詢參數時,java中最好的方法是什么,以確保我將來自第三方站點的所有輸入正確轉換為可以存儲在日志文件中的有效UTF-8字符串?

Java字符串在內部始終為UTF-16。 真正需要注意編碼的地方是將字節轉換為字符串,反之亦然,因為這就是編碼的含義:一組在字節和字符/字符串之間轉換的規則。 不是字符串的屬性。 在您的情況下,轉換應該恰好發生兩次:從第三方站點讀取時以及寫入日志文件時。

從第三方網站閱讀時,您不能僅使用UTF-8,因為這些網站可以使用各種不同的編碼。 因此,您需要遵循它們在HTTP標頭,HTML META標記或XML標頭中聲明的編碼。 任何體面的HTTP客戶端都會為您做到這一點,因此您只需要讓它完成其工作即可,而無需嘗試自己做任何花哨的事情。

另一方面,在寫入日志文件時,應確保使用的是UTF-8,而不是平台默認的編碼(即使它是UTF-8,也可能會更改)。 在創建OutputStreamWriter時,應該在日志庫的配置中完成此操作,或者如果在不使用此類庫的情況下編寫文件,則應這樣做。

步驟1:確保包含表單的頁面本身位於UTF-8中。

第2步:檢查傳入請求的標頭,以查看它們是否為您提供了字符集。

步驟3:不要依賴String(byte[])InputStreamReader(InputStream) 始終調用采用顯式字符集規范的函數。

String(byte[] bytes, Charset charset)構造函數允許您指定編碼字符集。

暫無
暫無

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

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