适配windows编码后的最终版

develop
程芳宇 5 days ago
parent 9486c78c7a
commit 48faaea4e8

@ -2,30 +2,69 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<modelVersion>4.0.0</modelVersion>
<groupId>com.scapeSharing</groupId>
<artifactId>Quiz_Generator_personal</artifactId>
<version>1.0-SNAPSHOT</version>
<groupId>com.scapeSharing</groupId>
<artifactId>Quiz_Generator_personal</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<source>17</source>
<target>17</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>6.2.10</version>
</dependency>
<!-- 打包成可执行的 fat jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.quizgenerator.system.QuizApplication</mainClass>
</transformer>
</transformers>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</dependencies>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>6.2.10</version>
</dependency>
</dependencies>
</project>

@ -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;
}
}

@ -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;
}
/** 错误信息. */

Loading…
Cancel
Save