From 48faaea4e8a5108e2b658d40e005438ed4114782 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E8=8A=B3=E5=AE=87?= <15528541+cheng-fangyu@user.noreply.gitee.com> Date: Thu, 25 Sep 2025 16:33:53 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8Dwindows=E7=BC=96=E7=A0=81?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E6=9C=80=E7=BB=88=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 83 ++++++++++++++----- .../quizgenerator/service/UserService.java | 7 +- .../com/quizgenerator/system/ConsoleUi.java | 25 +++++- 3 files changed, 88 insertions(+), 27 deletions(-) diff --git a/pom.xml b/pom.xml index 664b17f..ddb56dd 100644 --- a/pom.xml +++ b/pom.xml @@ -2,30 +2,69 @@ - 4.0.0 + 4.0.0 - com.scapeSharing - Quiz_Generator_personal - 1.0-SNAPSHOT + com.scapeSharing + Quiz_Generator_personal + 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + 17 + 17 + UTF-8 + + - - 17 - 17 - UTF-8 - - - - org.projectlombok - lombok - 1.18.30 - provided - - - org.springframework - spring-core - 6.2.10 - + + + org.apache.maven.plugins + maven-shade-plugin + 3.6.0 + + + package + + shade + + + + + com.quizgenerator.system.QuizApplication + + + false + + + + + + - + + 17 + 17 + UTF-8 + + + + org.projectlombok + lombok + 1.18.30 + provided + + + org.springframework + spring-core + 6.2.10 + + + + \ No newline at end of file diff --git a/src/main/java/com/quizgenerator/service/UserService.java b/src/main/java/com/quizgenerator/service/UserService.java index bf2ea99..24b3293 100644 --- a/src/main/java/com/quizgenerator/service/UserService.java +++ b/src/main/java/com/quizgenerator/service/UserService.java @@ -17,15 +17,16 @@ public class UserService { public User login(String username, String password) { // 1. 调用修改后的 findByUsername。如果用户不存在,这里会得到 null User user = UserDataBase.findByUsername(username); + if (user == null) { + return null; + } // 2. 检查用户密码是否匹配 password = DigestUtils.md5DigestAsHex(password.getBytes()); if (user.getPassword().equals(password)) { // 登录成功,返回找到的 user 对象 return user; - } else { - // 用户不存在或密码错误,返回 null - return null; } + return null; } } diff --git a/src/main/java/com/quizgenerator/system/ConsoleUi.java b/src/main/java/com/quizgenerator/system/ConsoleUi.java index adc3940..eae12c0 100644 --- a/src/main/java/com/quizgenerator/system/ConsoleUi.java +++ b/src/main/java/com/quizgenerator/system/ConsoleUi.java @@ -2,6 +2,7 @@ package com.quizgenerator.system; import com.quizgenerator.common.Level; import com.quizgenerator.entity.User; +import java.nio.charset.Charset; import java.util.Scanner; /** UI界面. */ @@ -10,7 +11,21 @@ public class ConsoleUi { /** 输入. */ public ConsoleUi() { - this.scanner = new Scanner(System.in); + // 自动检测控制台编码:Windows 通常为 GBK,其他系统为 UTF-8 + String consoleEncoding = detectConsoleEncoding(); + this.scanner = new Scanner(System.in, consoleEncoding); + } + + /** 检测控制台编码(主要解决 Windows 中文乱码问题). */ + private String detectConsoleEncoding() { + String os = System.getProperty("os.name").toLowerCase(); + if (os.contains("win")) { + // Windows 系统控制台默认使用 GBK(代码页 936) + return "GBK"; + } else { + // Linux / macOS 终端通常使用 UTF-8 + return Charset.defaultCharset().name(); + } } /** 主界面展示. */ @@ -27,7 +42,13 @@ public class ConsoleUi { */ public String[] promptForCredentials() { System.out.print("请输入用户名和密码 (用空格隔开): "); - return scanner.nextLine().split(" "); + String line = scanner.nextLine().trim(); + // 至少保证返回长度为2的数组,避免后续 IndexOutOfBoundsException + String[] parts = line.split(" ", 2); // 最多 split 成 2 部分(支持密码含空格) + if (parts.length < 2) { + return new String[] {"", ""}; // 触发格式错误 + } + return parts; } /** 错误信息. */ -- 2.34.1