首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java File.listFiles() 遇亂碼文件名拋 JNI UTF-8 錯誤

     編輯:程式設計疑難解答

現象

目錄下存在亂碼文件名,調用 file.listFiles() 拋出:

JNI DETECTED ERROR: input is not valid Modified UTF-8: illegal start byte 0x94

原因

文件系統編碼與 JVM 預期不一致(如 Linux 文件名為 GBK,JVM 按 UTF-8 讀取),導致 JNI 層解碼失敗。

解決嘗試

  • 啟動 JVM 添加 -Dsun.jnu.encoding=GBK -Dfile.encoding=GBK(視文件系統實際編碼)。
  • 使用 Files.newDirectoryStream(Path) (NIO.2) 替代舊 API,異常處理更靈活。
  • 檢查文件名是否含 BOM(UTF-8 BOM: EF BB BF),需去除。
  • 根治:規範文件命名編碼,避免混用編碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved