簡體   English   中英

Java Linux字符編碼問題

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

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