[英]Java linux character encoding issue
我在linux中遇到字符編碼問題。 我正在從Amazon S3檢索內容,該內容是使用UTF-8編碼保存的。 內容為中文,我可以在瀏覽器中正確看到內容。
我正在使用Amazon SDK檢索內容並對其進行一些更新,這是我正在使用的代碼:
StringBuilder builder = new StringBuilder();
S3Object object = client.getObject(new GetObjectRequest(bucketName, key));
BufferedReader reader = new BufferedReader(new
InputStreamReader(object.getObjectContent(), "utf-8"));
while (true) {
String line = reader.readLine();
if (line == null)
break;
builder.append(line);
}
這段代碼在Windows環境中運行良好,因為我能夠更新內容並將其保存回去而不會弄亂其中的任何漢字。
但是,它在linux環境中的行為有所不同。 該代碼無法正確翻譯字符,漢字呈現為???
我不確定這里出了什么問題。 任何指針將不勝感激。
-謝謝
您使用的2個操作系統的默認字符集不同。
首先,您可以通過打印默認字符集來確認差異。
Charset.defaultCharset.name()
在您代碼的某個位置,我認為此默認字符集已用於某些String轉換。 正確的過程應該是進行跟蹤,並指定UTF-8。
在看不到該代碼的情況下,我只能提出一種“作弊”的方式:在代碼的開頭附近或在Java啟動時顯式設置默認字符集。 請參閱此處以更改默認字符集: 設置默認Java字符編碼?
HTH
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.