diff --git a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java index 29dafbd..5730da5 100644 --- a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java +++ b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java @@ -5,14 +5,31 @@ import javafx.scene.control.TextArea; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +/** + + 编码检测工具类 + + */ public class EncodingDetector { + /** + * 检测 TextArea 中的文本编码 + * + * @param textArea 文本区域 + * @return 字符串表示的编码,如果检测失败则返回 "UNKNOWN" + */ public static String detectEncoding(TextArea textArea) { String text = textArea.getText(); return detectEncoding(text); } + /** + * 检测文本编码 + * + * @param text 要检测的文本 + * @return 字符串表示的编码,如果检测失败则返回 "UNKNOWN" + */ public static String detectEncoding(String text) { // 尝试常见的编码 for (Charset charset : commonCharsets()) { @@ -25,6 +42,11 @@ public class EncodingDetector { return "UNKNOWN"; } + /** + * 获取常见的字符集数组 + * + * @return 常见字符集数组 + */ private static Charset[] commonCharsets() { return new Charset[]{ StandardCharsets.UTF_8, @@ -35,6 +57,13 @@ public class EncodingDetector { }; } + /** + * 检查指定编码是否能够正确解码文本 + * + * @param text 要检测的文本 + * @param encoding 要尝试的编码 + * @return 如果指定编码能够正确解码文本,则返回 true,否则返回 false + */ private static boolean isValidEncoding(String text, Charset encoding) { // 尝试使用指定编码解码 byte[] bytes = text.getBytes(encoding);