У меня есть Java-программа, которая почти отлично работает. Я развиваюсь на Mac и подталкиваю к Linux для производства. Когда mac ищет файловую систему и вставляет новые имена файлов в базу данных, она отлично работает. Однако, когда я нажимаю на окно linux и выполняю поиск/вставку, он находит файлы с некоторыми символами как разные IE: Béla Fleck. Они выглядят идентично мне в базе данных и в файловых системах Mac AND Linux. Фактически, в блоках mac и linux есть NFS-монтирования для третьей системы (linux), где находятся файлы.java читает имена файлов файловой системы по-разному на osx и linux
Я сбросил байты и вижу, как linux и mac видят строку из файловой системы: Béla Fleck.
линукс:
utf8bytes[0] = 0x42
utf8bytes[1] = 0x65
utf8bytes[2] = 0xcc
utf8bytes[3] = 0x81
utf8bytes[4] = 0x6c
utf8bytes[5] = 0x61
utf8bytes[6] = 0x20
utf8bytes[7] = 0x46
utf8bytes[8] = 0x6c
utf8bytes[9] = 0x65
utf8bytes[10] = 0x63
utf8bytes[11] = 0x6b
linux says LANG=en_US.UTF-8
макинтош:
utf8Bytes[0] = 0x42
utf8Bytes[1] = 0xc3
utf8Bytes[2] = 0xa9
utf8Bytes[3] = 0x6c
utf8Bytes[4] = 0x61
utf8Bytes[5] = 0x20
utf8Bytes[6] = 0x46
utf8Bytes[7] = 0x6c
utf8Bytes[8] = 0x65
utf8Bytes[9] = 0x63
utf8Bytes[10] = 0x6b
mac says LANG=en_US.UTF-8
попробовал это, до сих пор нет радости.
java -Dfile.encoding=UTF-8
Я использую Java NIO файл, чтобы получить каталог:
java.nio.file.Path path = Paths.get("test");
затем идущий по пути с
Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
, а затем, так как это подкаталог в тестовом пути :
file.getParent().getName(1).toString()
У кого-либо есть идентификатор что происходит, и как я могу это исправить?
Спасибо.
Они выглядят одинаково, так как имя файла Mac содержит один акцентированный «E» символ ('é'), в то время как имя файла Linux содержит простой«е»характер с последующим комбинационной акцентом (' е'¯'). Визуально они выглядят одинаково, и большинство [Collators] (http://docs.oracle.com/javase/8/docs/api/java/text/Collator.html) будут считать их идентичными. Что касается того, почему они разные, трудно сказать, не видя кода, который получает/создает имена файлов. – VGR
добавил java.nio.file звонки – phomlish