![]() |
|
![]() ![]() ![]() |
|
plica98 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 12.3.2012 Репутация: нет Всего: нет |
Добрый день уважаемые Qt-шники.
Приложение было написано под Linux и прекрасно работало, пока его не перенесли в Windows 7. Собственно и под Windows 7 все нормально работает, пока не используешь русские буквы в пути. Приложение собрано в Qt_5_3_MSVC2010. Приложение скачивает файлы с удаленной машины и размещает их в папке с определенным именем. Так вот, если путь к этой папке не содержит русских букв, то все нормально. То есть, путь: PREFIX = "c:/new box/" - все нормально, путь: PREFIX = "c:/новая папка/" - не воспринимается. sprintf(l_buf,"%s%s",PREFIX,u); opis = fopen(l_buf,"wb"); Может кто-нибудь уже сталкивался с этой проблемой? Буду крайне признателен за помощь. С уважением plica98. Это сообщение отредактировал(а) plica98 - 18.11.2016, 15:08 |
|||
|
||||
maint |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 12.5.2008 Репутация: нет Всего: 2 |
два варианта могёт быть. Текст, имя файла, в программе в кодировке utf-8, а в файловой системе в cp-1251. Или наоборот.
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Раз программа работала в Linux'е, то она написана в Utf-8. fopen требует в win1251. У меня была схожая проблема. Решается так:
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 2 Всего: 50 |
А причем здесь Qt?
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 1 Всего: 459 |
При том, что MOC считает, что кодировка исходников совпадает с кодировкой строки, что верно только для GCC, но не для Visual Studio. Visual Studio если видит в исходниках символы в кодировке utf8 (при этом исходники с BOM), то конвертирует их в utf16, тогда как Qt считает, что там utf8. По размеру они тоже 2х байтные. Есть по меньшей мере 3 способа решения проблемы 1) Убрать BOM из исходников. Тогда VS думает, что это 1251 и не конвертирует uft8 в utf16 2) Использовать макрос QStringLiteral, насколько я понял, он превращает символы в однозначно трактуемые коды символов. 3) Использовать QOjbect::tr и кириллицу задавать только в файлах переводов. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
plica98 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 12.3.2012 Репутация: нет Всего: нет |
Доброе утро, уважаемые Коллеги.
Большое спасибо maint, borisbn, Alexeis за оперативные отклики, внимание и советы. Сейчас буду разбираться. Есть над чем поработать и задуматься. С уважением и благодарностью plica98. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |