diff --git a/exam-module-exam/exam-module-exam-biz/pom.xml b/exam-module-exam/exam-module-exam-biz/pom.xml
index 06bc530f..04f83b88 100644
--- a/exam-module-exam/exam-module-exam-biz/pom.xml
+++ b/exam-module-exam/exam-module-exam-biz/pom.xml
@@ -86,6 +86,13 @@
test
+
+ com.googlecode.juniversalchardet
+ juniversalchardet
+ 1.0.3
+
+
+
diff --git a/exam-module-exam/exam-module-exam-biz/src/main/java/pc/exam/pp/module/exam/controller/admin/question/ExamQuestionController.java b/exam-module-exam/exam-module-exam-biz/src/main/java/pc/exam/pp/module/exam/controller/admin/question/ExamQuestionController.java
index 9091b853..15bc1402 100644
--- a/exam-module-exam/exam-module-exam-biz/src/main/java/pc/exam/pp/module/exam/controller/admin/question/ExamQuestionController.java
+++ b/exam-module-exam/exam-module-exam-biz/src/main/java/pc/exam/pp/module/exam/controller/admin/question/ExamQuestionController.java
@@ -29,6 +29,7 @@ import pc.exam.pp.module.exam.controller.admin.questionexamine.vo.QuestionExamin
import pc.exam.pp.module.exam.dal.dataobject.EducationPaperTask;
import pc.exam.pp.module.exam.dal.dataobject.ExamQuestion;
import pc.exam.pp.module.exam.service.question.IExamQuestionService;
+import pc.exam.pp.module.exam.utils.charset.CharsetUtils;
import pc.exam.pp.module.system.enums.common.SexEnum;
import java.io.IOException;
@@ -295,7 +296,11 @@ public class ExamQuestionController {
if (!file.getFile().getOriginalFilename().endsWith(".c")) {
return CommonResult.error(100810, "请上传.c文件");
}
- return CommonResult.success(new String(file.getFile().getBytes(), "GBK"));
+
+ byte[] bytes = file.getFile().getBytes();
+ String content = CharsetUtils.detectAndRead(bytes);
+
+ return CommonResult.success(content);
}
}
diff --git a/exam-module-exam/exam-module-exam-biz/src/main/java/pc/exam/pp/module/exam/utils/charset/CharsetUtils.java b/exam-module-exam/exam-module-exam-biz/src/main/java/pc/exam/pp/module/exam/utils/charset/CharsetUtils.java
new file mode 100644
index 00000000..4b3f4517
--- /dev/null
+++ b/exam-module-exam/exam-module-exam-biz/src/main/java/pc/exam/pp/module/exam/utils/charset/CharsetUtils.java
@@ -0,0 +1,30 @@
+package pc.exam.pp.module.exam.utils.charset;
+
+import org.mozilla.universalchardet.UniversalDetector;
+
+import java.io.IOException;
+import java.nio.charset.Charset;
+
+public class CharsetUtils {
+
+ /**
+ * 自动识别文件编码,并返回字符串内容
+ * @param bytes 文件字节数组
+ * @return 文件内容
+ */
+ public static String detectAndRead(byte[] bytes) throws IOException {
+ // 1. 检测编码
+ UniversalDetector detector = new UniversalDetector(null);
+ detector.handleData(bytes, 0, bytes.length);
+ detector.dataEnd();
+ String detectedCharset = detector.getDetectedCharset();
+
+ // 2. 默认回退 UTF-8
+ if (detectedCharset == null) {
+ detectedCharset = "UTF-8";
+ }
+
+ // 3. 转换为字符串
+ return new String(bytes, Charset.forName(detectedCharset));
+ }
+}