java - 列出带有 Unicode 字符的文件名(阿拉伯语)
问题描述
我正在尝试获取目录和子目录中的所有文件名。目录和文件的名称是阿拉伯语。当我得到它返回的文件名时???标记而不是名称。之前有人遇到过这个问题吗?
boolean recursive = true;
Collection files = FileUtils.listFiles(root, null, recursive);
//System.out.println(files.toString());
PrintWriter success = new PrintWriter("E:\\success.txt", "UTF-8");
for (int i = 0; i < list.size(); i++) {
fileName = list.get(i);
for (Iterator iterator = files.iterator(); iterator.hasNext();) {
File file = (File) iterator.next();
if (file.getName().endsWith(fileName)) {
Files.copy(Paths.get(file.getAbsolutePath()),
Paths.get(targetDirectory + "\\" + file.getName()));
success.println(fileName.toString());
}
}
}
解决方案
您是否尝试过 UTF-16 编码格式?
PrintWriter success = new PrintWriter("E:\\success.txt", "UTF-16");
编辑: 我认为 UTF-8 应该能够正确编码阿拉伯字符。这里的问题可能是您用来读取文件的文本编辑器。请检查您用于读取文件的文本编辑器的编码格式。在编辑器中将编码设置为 Unicode UTF-8应该可以解决您的问题。
推荐阅读
- unit-testing - 使用互斥锁和解锁时 Go 测试挂起
- dpdk - 如何使用 DPDK IPN3KE 轮询模式驱动程序?
- springdoc - 按参数或标签或任何不同的键对 API 进行分组
- multithreading - 在使用 Start-ThreadJob 启动的线程中修改 PowerShell $using 范围变量
- c++ - MPI_Reduce() 到特定的数组元素
- java - 如何将 SQL 查询的结果设置为 Java 中的变量
- javascript - 如何使用输入从右到左填充和输出数组?
- javascript - ASP.NET Request.Files 为空,仅连接不良
- r - 为什么排名功能赋予所有国家同等的排名?
- pandas - SAS 将数据集设置为 Python