public String Phintx() {
Scanner cc = new Scanner(System.in);
String tt = new String(cc.next().getBytes(), "utf-8"); // 拋 UnsupportedEncodingException
return tt;
}
編譯報錯:未處理 UnsupportedEncodingException(受檢異常)。
String(byte[], String) 構造器聲明拋出 UnsupportedEncodingException,Java 強制要求捕獲或聲明拋出。
public String Phintx() {
Scanner cc = new Scanner(System.in);
String tt = "";
try {
tt = new String(cc.next().getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8.name());
} catch (UnsupportedEncodingException e) {
// UTF-8 是 Java 平台保證支持的編碼,理論不會發生
// 記錄日誌或拋運行時異常
throw new IllegalStateException("JVM missing UTF-8", e);
}
return tt;
}
public String Phintx() throws UnsupportedEncodingException {
Scanner cc = new Scanner(System.in);
return new String(cc.next().getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8.name());
}
StandardCharsets.UTF_8 避免硬編碼字符串拼寫錯誤。cc.next() 讀取單詞(遇空白停止),若需整行請用 cc.nextLine()。getBytes() 無參數版本使用平台默認編碼,再轉 UTF-8 可能導致雙重編碼錯亂。直接用 StandardCharsets.UTF_8 讀寫更安全。
// 讀取控制台輸入已按控制台編碼解碼為 String,通常無需再轉碼
String input = new Scanner(System.in, StandardCharsets.UTF_8.name()).nextLine();