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