Название: Узнать системную кодировку Отправлено: voltron от Август 15, 2012, 20:54 Потребовалось получать название кодировки, которая используется в QTextCodec. Но когда делаю так
Код: mCodec = QTextCodec::codecForLocale(); то в encodingName получаю неинформативное "System", вместо желаемого "UTF-8" или, например, "ISO-8859-7". Есть какой-то способ узнать какая именно кодировка скрывается под этим "System"? В aliases() смотрел, там пусто. Qt 4.7.0/4.7.1 Название: Re: Узнать системную кодировку Отправлено: wester от Август 17, 2012, 12:44 Система ведь Windows ?
если да, то некоторые обсуждения https://bugreports.qt-project.org/browse/QTBUG-18274?attachmentOrder=desc http://www.qtcentre.org/archive/index.php/t-2071.html ну и решение для windows http://stackoverflow.com/questions/10702103/how-to-get-windows-xp-gui-default-code-page Название: Re: Узнать системную кодировку Отправлено: voltron от Август 17, 2012, 13:51 Системы разные: Windows, Linux, Mac.
Вторую ссылку уже видел. Увы, решения там нет. Да и проблема не в том, что данные пишутся не так, с этим как раз все в порядке. Нужно именно узнать что за кодировка используется в системе. Например, в Linux у меня системная UTF-8, в винде — CP1251. Но и там, и там QTextCodec::codecForLocale()->name() возвращает "System". Название: Re: Узнать системную кодировку Отправлено: Serr500 от Август 17, 2012, 14:06 Так в документации написано даже, что он вернёт "System":
Цитировать On Windows, the codec will be based on a system locale. On Unix systems, starting with Qt 4.2, the codec will be using the iconv library. Note that in both cases the codec's name will be "System". http://qt-project.org/doc/qt-4.8/qtextcodec.html#codecForLocale (http://qt-project.org/doc/qt-4.8/qtextcodec.html#codecForLocale)Видимо, придётся использовать родные для каждой системы функции чтобы получить правильное значение кодировки. Название: Re: Узнать системную кодировку Отправлено: wester от Август 17, 2012, 15:59 Вторую ссылку уже видел. Увы, решения там нет. Да и проблема не в том, что данные пишутся не так, с этим как раз все в порядке. Нужно именно узнать что за кодировка используется в системе. Например, в Linux у меня системная UTF-8, в винде — CP1251. Но и там, и там QTextCodec::codecForLocale()->name() возвращает "System". 3 - я ссылка на stackoverflowТам написаны названия api функций для windows для определения кодировки, конкретно GetACP и GetOEMCP а ссылку на багтрекер дал, что бы просто посмотреть что о проблеме известно, но заниматься ее решением не хотят Название: Re: Узнать системную кодировку Отправлено: xintrea от Сентябрь 23, 2018, 18:04 Вот эти две статьи должны помочь:
Как в Qt работать с русскими именами файлов и директорий в Windows (https://webhamster.ru/mytetrashare/index/mtb0/1537709346xwr0z7v1a4) Как в Qt узнать системную кодировку локали под Windows (https://webhamster.ru/mytetrashare/index/mtb0/1537713575ehtkimuwz7) |