Как загрузить словарь hunspell в путь Windows с символами, отличными от ASCII?

Как загрузить словарь 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 из пути с символами, отличными от ASCII

Как исправить?

Использование Qt5, MinGW 7.3.0.

Я также провел должное исследование и, насколько я вижу, LibreOffice делает то же самое, и, похоже, это работает для них: sspellimp.cxx, lingutil.hxx и lingutil.cxx.


person Vadim Peretokin    schedule 11.07.2019    source источник
comment
Комментарии не для расширенного обсуждения; этот разговор был перенесено в чат.   -  person Bhargav Rao    schedule 13.07.2019


Ответы (1)


Чтобы получить чистый ASCII-путь, понятный Hunspell. В качестве примера см. QTIFW-175.

(спасибо Каталог Windows, который никогда не будет содержать символы, отличные от ASCII, для временного файла?)

person Vadim Peretokin    schedule 20.07.2019