Как загрузить словарь 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 завершается неудачно:
![Hunspell loading from path with non-ASCII characters fails](https://i.stack.imgur.com/U077K.png)
Как исправить?
Используя Qt5, MinGW 7.3.0.
Я также провел надлежащее исследование и, насколько я вижу, LibreOffice делает то же самое, и, похоже, работает для них: sspellimp.cxx lingutil.hxx и lingutil.cxx .