Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Qt-ofstream-и-UTF8 в локали - как убрать "кракозябры"?
|
|||
|---|---|---|---|
|
#18+
Пишу простенький код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. вместо ожидаемого вывода русский [р] [у] [с] ... получаю русский [?] [?] [?] Среда разработки - QT Creator под Win7. Кодировка исходника - UTF8. Кодировка выходного файла (как установил) - UTF8. Получается, т.к. std::string ничего о UTF не знает, при выводе строки целиком "магическим образом" происходит преобразование в UFT8, а вот при выводе "по символу" такого преобразования не происходит... Как можно весь текст привести к одной локали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2016, 22:05 |
|
||
|
Qt-ofstream-и-UTF8 в локали - как убрать "кракозябры"?
|
|||
|---|---|---|---|
|
#18+
BagaBaga, wstring, L"русский", не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 01:33 |
|
||
|
Qt-ofstream-и-UTF8 в локали - как убрать "кракозябры"?
|
|||
|---|---|---|---|
|
#18+
в UTF-8 кирилица двухбайтная . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 08:02 |
|
||
|
Qt-ofstream-и-UTF8 в локали - как убрать "кракозябры"?
|
|||
|---|---|---|---|
|
#18+
egorychBagaBaga, wstring, L"русский", не? Нет. он кирилицу UTF-8 разворачивает побайтно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 08:05 |
|
||
|
Qt-ofstream-и-UTF8 в локали - как убрать "кракозябры"?
|
|||
|---|---|---|---|
|
#18+
YesSqlegorychBagaBaga, wstring, L"русский", не?Нет. он кирилицу UTF-8 разворачивает побайтно.ну. а разве строка из двухбайтных символов не спасёт ОРД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 09:36 |
|
||
|
Qt-ofstream-и-UTF8 в локали - как убрать "кракозябры"?
|
|||
|---|---|---|---|
|
#18+
egorychYesSqlпропущено... Нет. он кирилицу UTF-8 разворачивает побайтно.ну. а разве строка из двухбайтных символов не спасёт ОРД? Он все делает в UTF-8 и его IDE тоже. вот это Код: plaintext 1. 2. даст результат 26 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 09:52 |
|
||
|
Qt-ofstream-и-UTF8 в локали - как убрать "кракозябры"?
|
|||
|---|---|---|---|
|
#18+
очень странно, все мои исходники лежает в utf8 и не жалуются. думаю проблема в том, что то, чем потом открывается файл не понимает, что этот файл в utf8 - может быть задать там кодировку в мета (если я правильно понимаю, то это ведь html файл, да?)..= как работает std::cout ? тоже крокозябры показвыает? и кстати вопрос, исходник правда в utf8 или только локаль такая стоит ,а исходник в cp1251 на самом деле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 13:31 |
|
||
|
Qt-ofstream-и-UTF8 в локали - как убрать "кракозябры"?
|
|||
|---|---|---|---|
|
#18+
ой, извиняюсь, в тему не вник... ответ уже дали :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 13:36 |
|
||
|
Qt-ofstream-и-UTF8 в локали - как убрать "кракозябры"?
|
|||
|---|---|---|---|
|
#18+
BagaBaga, там надо кодеки задавать для файла. для QT шного. Или самому из QSTring преобразовывать. В общем, все сложно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 14:46 |
|
||
|
Qt-ofstream-и-UTF8 в локали - как убрать "кракозябры"?
|
|||
|---|---|---|---|
|
#18+
Ок, чудес не бывает. А так хотелось. После нескольких экспериментов и раздумий, пришел к выводу, что причина такая: IDE действительно "хранит" русский код в UTF8 - установить это "без проблем". std::string знать ничего не знает о многобайтовых кодировках. В результате код Код: plaintext 1. создаст вектор строк, каждая из которых будет инициализирована по-байтно... в конце концов, кто сказал, что все символы должны быть печатными ("видимыми")? При этом код Код: plaintext 1. 2. 3. просто "выплюнет" сохранённый массив байт. И любой редактор прочтёт его как валидный UTF8 текст... ведь эти байты - и есть последовательность байт, представляющих строку в UTF8... Тогда вот этот код Код: plaintext 1. 2. 3. 4. 5. отработает "в лоб". Будет извлекать по байту и "выплёвывать" их в обрамлении скобочек. При этом, понятное дело, многобайтовое представление символа будет "порвана" на байты, и какие "этим байтам" будут соответствовать значки ... как повезёт, в общем. Решения? Можно попробовать новый литерал u8 (пока не пробовал - мой компилятор не поддерживает). Или "загонять" в QString и преобразовывать из неё... Или использовать ICU. Или другую либу. Или собтвенный велосипед в стиле UTF8_2_MyLocale... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 19:21 |
|
||
|
Qt-ofstream-и-UTF8 в локали - как убрать "кракозябры"?
|
|||
|---|---|---|---|
|
#18+
или воспользоваться Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 20:32 |
|
||
|
Qt-ofstream-и-UTF8 в локали - как убрать "кракозябры"?
|
|||
|---|---|---|---|
|
#18+
BagaBaga, в кодировке UTF-8, слово «русский» кодируется следующей последовательностью байтов: 209, 128, 209, 131, 209, 129, 209, 129, 208, 186, 208, 184, 208, 185 То есть каждая русская буква кодируется двумя байтами. Поэтому вместо кода: BagaBaga Код: plaintext 1. 2. 3. попробуйте так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. где функция utf8_char_len возвращает сколько байт занимает символ в кодировке UTF-8: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2016, 04:38 |
|
||
|
Qt-ofstream-и-UTF8 в локали - как убрать "кракозябры"?
|
|||
|---|---|---|---|
|
#18+
http://www.boost.org/doc/libs/1_61_0/libs/locale/doc/html/boundary_analysys.html (boost.org/libs/locale) или перевести utf8 to utf16 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2016, 11:45 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39237849&tid=2018515]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 279ms |
| total: | 464ms |

| 0 / 0 |
