簡體   English   中英

Java國際化

[英]Java Internationalization

我在處理Java字符串時遇到麻煩。 我有一個字符串s,其值是丞(我隨機選擇的中文字符,我不會說中文)。 如果我打電話

String t = new String(s.getBytes());
if (s.equals(t))
    System.out.println("String unchanged");
else
    System.out.println("String changed");

然后我得到String更改的結果。 有人知道發生了什么嗎?

因為那個方法

使用平台的默認字符集將此字符串編碼為字節序列

如果您的默認字符集為US-ASCII ,則不會獲得該中文字母使用的相同字節

我想可能會在此過程中添加/刪除一個額外的位/字節。

嘗試使用getBytes(String charSetName)

public byte[] getBytes(String charsetName)

使用正確的charsetName

getBytes()方法使用默認編碼。 根據文檔:

當需要對編碼過程進行更多控制時,應使用CharsetEncoder類。

實際上,我知道了這一點,對這個帖子感到抱歉。 我使用的是默認的Java字符集,而不是將其顯式轉換為UTF-8字符集。 現在可以使用了。

字符串t =新的String(s.getBytes()); 可以使用ASCII作為默認字符集創建字符串。 使用以下方法創建以charsetName為UTF-8的字符串

String(byte []個字節,int偏移量,int長度,字符串charsetName)

暫無
暫無

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

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