Я создал папку через mac finder и назвал ее février
(французская клавиатура).Я запускаю скрипт node.js, чтобы вернуть все папки и файлы, которые есть в этой.Чтобы получить имена папок / файлов из искателя, который я использовал:
const files = fs.readdirSync(dir);
files.forEach((file) => {
const path = `${dir}/${file}`;
const stat = fs.statSync(path);
if (stat && stat.isDirectory()) {
results = results.concat(readLocalDir(path));
} else {
results.push(path);
}
});
Это дает мне массив с полным путем ['février/image.png', ...]
.
Затем я проверяю с помощью API Dropbox, если этот файл уже загружен в мою папку Dropbox.Я использую полный путь, чтобы проверить это следующим образом:
return dropbox
.filesListFolder({ path: `/${dir}`, recursive: true })
.then(res => getFilesListContinue(res))
...
async function getFilesListContinue(res) {
if (res.has_more) {
const files = await dropbox.filesListFolderContinue({ cursor: res.cursor });
return getFilesListContinue({
has_more: files.has_more,
entries: flatten([res.entries, files.entries]),
cursor: files.cursor,
});
}
return res;
}
Несмотря на то, что когда я делаю это, он возвращает, что файла нет, однако папка и файл есть, но папкаИмя имеет другую кодировку.
Затем я проверил кодировку каждого имени папки (то, что на моем искателе, и то, что на моем Dropbox).Я использовал обнаружение кодировки символов , и вот что я получил:
finder: février { encoding: 'ascii' }
dropbox: février { encoding: 'windows-1252' }
Если вы попытаетесь выбрать два слова février
через редактор, вы увидите, что можете '• выберите то же вхождение , что и первое, потому что они не совпадают février
= / = février
.
Есть ли какой-нибудь простой способ преобразования моего локального ASCII (?) строка в windows-1252
кодированную строку, чтобы иметь возможность сравнить их с?