From 8717b3ed0ab51aa7e1256edef80ddfbffba87e8b Mon Sep 17 00:00:00 2001 From: YCoffee Date: Mon, 10 Feb 2025 15:07:12 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81Compressed=20file=20preview=20address?= =?UTF-8?q?=20error=20handling=202=E3=80=81detectEncoding=20utf16=20rawtex?= =?UTF-8?q?t=20byte=20array=20is=20empty=20ArrayIndexOutOfBoundsException?= =?UTF-8?q?=20handling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/keking/service/FileHandlerService.java | 2 +- .../src/main/java/cn/keking/utils/SimpleEncodingDetects.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/cn/keking/service/FileHandlerService.java b/server/src/main/java/cn/keking/service/FileHandlerService.java index 2444bc750..05f2179c6 100644 --- a/server/src/main/java/cn/keking/service/FileHandlerService.java +++ b/server/src/main/java/cn/keking/service/FileHandlerService.java @@ -474,7 +474,7 @@ public FileAttribute getFileAttribute(String url, HttpServletRequest req) { boolean isCompressFile = !ObjectUtils.isEmpty(compressFileKey); if (isCompressFile) { //判断是否使用特定压缩包符号 try { - originFileName = URLDecoder.decode(originFileName, uriEncoding); //转义的文件名 解下出原始文件名 + originFileName = URLDecoder.decode(compressFilePath, uriEncoding); //转义的文件名 解下出原始文件名 attribute.setSkipDownLoad(true); } catch (UnsupportedEncodingException e) { e.printStackTrace(); diff --git a/server/src/main/java/cn/keking/utils/SimpleEncodingDetects.java b/server/src/main/java/cn/keking/utils/SimpleEncodingDetects.java index 19e138bb7..cf873dab4 100644 --- a/server/src/main/java/cn/keking/utils/SimpleEncodingDetects.java +++ b/server/src/main/java/cn/keking/utils/SimpleEncodingDetects.java @@ -685,8 +685,8 @@ int utf16_probability(byte[] rawtext) { // int score = 0; // int i, rawtextlen = 0; // int goodbytes = 0, asciibytes = 0; - if (rawtext.length > 1 && ((byte) 0xFE == rawtext[0] && (byte) 0xFF == rawtext[1]) || // Big-endian - ((byte) 0xFF == rawtext[0] && (byte) 0xFE == rawtext[1])) { // Little-endian + if (rawtext.length > 1 && (((byte) 0xFE == rawtext[0] && (byte) 0xFF == rawtext[1]) || // Big-endian + ((byte) 0xFF == rawtext[0] && (byte) 0xFE == rawtext[1]))) { // Little-endian return 100; } return 0;