|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.12.2015, 20:15 | #11 |
Форумчанин
Регистрация: 15.12.2013
Сообщений: 414
|
Когда я меняю номер телефона или пункт "Статус",а проблемы именно со стрингом на русском языке
Код:
Последний раз редактировалось Stilet; 01.12.2015 в 21:47. |
01.12.2015, 21:48 | #12 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Наверное тебе стоит прикрепить исходник архивом к теме. можно попробовать будет его потестить. Так на глаз я не вижу затрещин...
I'm learning to live...
|
01.12.2015, 22:12 | #13 |
Форумчанин
Регистрация: 15.12.2013
Сообщений: 414
|
Прикрепила
|
01.12.2015, 23:26 | #14 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
О, еще одна жертва "оригинальной" задумки с кодировками в Windows )
Суть такова: давно-давно, когда компьютеры были большими, и царил на них DOS, и все безмятежно играли в Elite, для хранения кириллических символов люди пользовались кодировкой CP-866. И все бы счастливо жили до сегодняшнего дня, если бы не ОН. Когда он составлял свой план захвата мира, одним из пунктов вписал туда "свести с ума проклятых Русских". И все заверте… Для начала в windows впилили еще одну кодировку кириллицы. Но Билл не был бы Биллом, если бы остановился на этом. Он сделал гениальный в своей простоте шаг: для всех оконных приложений включил кодировку 1251, а в консоли оставил 866. Официально - "для сохранения совместимости со старыми DOS-программами", но мы-то знаем правду! И даже теперь, спустя 30 лет, его план продолжает действовать, вызывая боль и непонимание у Русских программистов! ) Твой редактор работает в кодировке 1251. Следовательно, весь кириллический текст сохраняется в файл (а потом и компилируется) тоже в 1251. И при выводе в консоль, которая настроена на 866, выглядит как иероглифическое проклятие Билла. Когда ты вызываешь setlocale для переключения на Русскую локаль - кодировка вывода в консоли меняется на 1251, и текст показывается правильно. Но Билл не был бы Биллом, если бы кодировка ввода тоже переключалась: на самом деле все введенные буквы сохраняются в памяти в кодировке 866, и только для вывода эха (в момент нажатия) показываются на экране в 1251, чтобы создать впечатление того, что все окей ) Потому, чтобы записать введенное в файл, или еще раз показать на экране - надо сконвертировать строчку в 1251. Для этого Билл (спасибо хоть за это) оставил нам функцию OemToChar. Или более безопасную OemToCharBuff, но для простой лабы хватит и первой. Для переменной типа std::string (если она не константная) можно просто писать Код:
В следующей серии: блеск и нищета юникодных кодировок в виндовой консоли, и почему там никогда не будет нормальной поддержки UTF-8 из коробки. Такие дела ) |
02.12.2015, 00:14 | #15 |
Форумчанин
Регистрация: 15.12.2013
Сообщений: 414
|
Спасибо за объяснение,очень интересно пишите!))
Но я уже пробовала эту функцию,мне выдает следующую ошибку: OemToCharW: невозможно преобразовать параметр 2 из "char *" в "LPWSTR" |
02.12.2015, 06:13 | #16 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
Это значит что у тебя юникодный билд включен. Тогда пиши OemToCharA.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Си как организовать структуру, данные взять из файла или сгенерировать | Vlt | Помощь студентам | 7 | 06.06.2012 22:55 |
Занести данные из 1 текстбокса в другой | Rust_12 | Microsoft Office Excel | 4 | 19.03.2012 02:39 |
Программно занести данные в реестр | Nexus2116 | Общие вопросы Delphi | 1 | 05.11.2010 21:56 |
занести данные в таблицу | Танюха Ю | Помощь студентам | 4 | 14.10.2009 17:48 |
Как занести данные в DBGrid | bbk_serg | БД в Delphi | 4 | 25.02.2009 14:44 |