首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Eclipse 控制台輸入中文亂碼/光標錯位:System.in 字節流導致漢字截斷

     編輯:程式設計綜合問答

現象

Eclipse 控制台運行 Java 程序,輸入中文時:有時正常,有時拋異常,輸入文本不變綠,光標位置異常。

根因

System.in 是 字節流,漢字在 UTF-8 下佔 3 字節,直接 read() 或 Scanner.next() 會按字節切分,導致字符不完整、解碼錯誤、光標渲染異常。

標準解法:BufferedReader + InputStreamReader

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class ConsoleInputDemo {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));
        System.out.print("請輸入:");
        String line = br.readLine();  // 按行讀取,自動處理編碼
        System.out.println("您輸入:" + line);
    }
}

關鍵點

  • 指定編碼:new InputStreamReader(System.in, "UTF-8") 與控制台編碼一致(Eclipse 默認 UTF-8,可在 Run Configurations → Common → Encoding 確認)。
  • 按行讀取:readLine() 遇換行符返回完整字符串,避免半個漢字問題。
  • Scanner 陷阱:Scanner.next() 以空白分隔,中文無空格會整行讀入,但內部仍用字節流,易出問題;建議 Scanner.nextLine() 配合 useDelimiter(\\n)。

Eclipse 設置檢查

  1. Run → Run Configurations → (你的主類) → Common → Encoding 勾選 UTF-8。
  2. Console 編碼一致性:Window → Preferences → General → Workspace → Text file encoding = UTF-8。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved