Название: Проблемы с передачей русской строки. Отправлено: mad Mr F. от Октябрь 07, 2010, 21:58 Цель передать русскую строку по сети. Когда отправляю из строки через toUtf8 получаю массив байт и к нему добавляю шапку свою. Когда принимаю то убираю шапку и через fromUtf8 получаю строку.
Для наглядности приведу выдержки из кода. В main.cpp: Код На стороне отправителя: Код при отправке пишу sendStr( tr( "Привет!")). Функции эти являются методами обьектов ( наследники QObject). На стороне получателя: Код Это не реальный код, так что об оптимальности вопроса не стоит. Подобное в линуксе замечательно работает. А в винде в начале строки добавляются какие-то иероглифы( в 7-ке что-то типа перевернутой буквы "г" а в ХР четыре квадрата), но сама строка присутствует целиком. Я, если честно, даже куда искать уже не совсем понимаю... Расскажите что не так) Название: Re: Проблемы с передачей русской строки. Отправлено: garryHotDog от Октябрь 08, 2010, 09:12 попробуй указать кодеки...как то так ():
Код
это для винды соот-но..... Название: Re: Проблемы с передачей русской строки. Отправлено: mad Mr F. от Октябрь 08, 2010, 10:31 Ну
TextCodec::setCodecForCString(QTextCodec::codecForName("Windows-1251")); Я еще могу понять, но для локали-то TextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251")); зачем? Название: Re: Проблемы с передачей русской строки. Отправлено: andrew.k от Октябрь 08, 2010, 11:15 Это не реальный код, так что об оптимальности вопроса не стоит. Подобное в линуксе замечательно работает. А в винде в начале строки добавляются какие-то иероглифы( в 7-ке что-то типа перевернутой буквы "г" а в ХР четыре квадрата), но сама строка присутствует целиком. Прочитай раздел "Порядок байтов".Я, если честно, даже куда искать уже не совсем понимаю... Расскажите что не так) http://ru.wikipedia.org/wiki/UTF-8 (http://ru.wikipedia.org/wiki/UTF-8) Они мешают тебе? Думаю, они должны обрабатываться QString'ом автоматически и для тебя быть прозрачными Название: Re: Проблемы с передачей русской строки. Отправлено: mad Mr F. от Октябрь 08, 2010, 11:43 Если это они то QString их как-то плохо обрабатывает. Полученная строка добавляется в QTextBrowser. И, как писал выше, под линуксом их нет, а под виндой появляются.
Название: Re: Проблемы с передачей русской строки. Отправлено: andrew.k от Октябрь 08, 2010, 12:36 Если это они то QString их как-то плохо обрабатывает. Полученная строка добавляется в QTextBrowser. И, как писал выше, под линуксом их нет, а под виндой появляются. То что это они, это точно.Я под виндой делал html в utf и редактор в котором я его делал тоже добавил три байта (EF BB BF). Дальше этот html отображаю в QTextBrowser. Никаких проблем не возникает. Что-то делаешь не так. Название: Re: Проблемы с передачей русской строки. Отправлено: andrew.k от Октябрь 08, 2010, 12:38 кстати, можешь провести эксперимент. Не добавляй в свою строку русский текст. только чисто латиница. Твои "друзья" должны пропасть, хотя не факт, просто предполагаю :)
Название: Re: Проблемы с передачей русской строки. Отправлено: mad Mr F. от Октябрь 08, 2010, 12:53 Так я и пишу про проблему с русским. Латиницей "друзей" нет)
Название: Re: Проблемы с передачей русской строки. Отправлено: andrew.k от Октябрь 08, 2010, 14:12 Так я и пишу про проблему с русским. Латиницей "друзей" нет) Ну значит это они и есть. Это метка порядка байтов. Если набор полностью латиницей, то метка не нужна.Обрати внимание, что метка состоит из трех байт имеющих предопределенное значение. А у тебя 4 байта с твоих слов. |