Как загрузить словарь hunspell в путь Windows с символами, отличными от ASCII?
руководство Hunspell предлагает:
В среде WIN32 используйте пути в кодировке UTF-8, начинающиеся с длинного префикса пути \?\, чтобы также обрабатывать независимую от системы кодировку символов и очень длинные имена путей.
Итак, у меня есть код, чтобы сделать следующее:
QString spell_aff = QStringLiteral(R"(\\?\%1%2.aff)").arg(path, newDict);
QString spell_dic = QStringLiteral(R"(\\?\%1%2.dic)").arg(path, newDict);
// while normally not a an issue, you can't mix forward and back slashes with the prefix
spell_dic = spell_aff.replace(QChar('/'), QStringLiteral("\\"));
spell_dic = spell_dic.replace(QChar('/'), QStringLiteral("\\"));
qDebug() << "right before Hunspell_create";
mpHunspell_system = Hunspell_create(spell_aff.toUtf8().constData(), spell_dic.toUtf8().constData());
qDebug() << "right after Hunspell_create";
Это добавляет префикс \\?\
к пути, использует согласованный разделитель каталогов, как указано в примечании в документация Microsoft и преобразует ее в кодировку UTF-8 с помощью .toUtf8().
Однако запустить код в Windows 10 Pro не удается:
Как исправить?
Использование Qt5, MinGW 7.3.0.
Я также провел должное исследование и, насколько я вижу, LibreOffice делает то же самое, и, похоже, это работает для них: sspellimp.cxx, lingutil.hxx и lingutil.cxx.