![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 04.11.2012
Сообщений: 22
|
![]()
Здравствуйте.
Целый день мучился с этой проблемой в кодировке текста... Так ничего путного и не получилось, решил написать Вам - может сталкивались или просто знаете такую ошибку. В краце о программу: написал маленькую прогу, которая содержит массив и записывает в него какой-либо текст по-символьно. В общем все по сути работает и записывает его нормально в формат ".txt". Но есть проблема и это факт: хоть и в самой проге при выводе массива его отображает нормально(например заполнив текстом "вот" и отображает "вот", с латинскими литерами все нормально), но когда я все это дело вывожу в текстовый документ - записывает каракули. Я уже спрашивал помощи у умных людей, лазил целый день по интернету и немного об этом разведал. Как я понял, Windows использует старую систему кодировки (ср866 вроде), а для отображения нормально русского текста нужен стандарт ср1251. Для этого предлагали функцию setlocale(), а именно установить с её помощью нормальную кодировку: setlocale(LC_ALL, ".1251"); (или вместо .1251 я ставил "rus"("Russian")). Но, чуда не произошло( Так же пытался вводить текст разными способами(getchar(), scanf(), cin, gets()), что результатов тоже не принесло. Я конечно не унываю, и углубляюсь уже в глубь самой кодировки(распечатал статью Джоэла Спольски,потом почитаю на досуге), но,если честно,альтернативных вариантов я пока не придумаю. Буду очень признателен за ответы, особенно стоящие! Спасибо, что потратили время, прочитав весь тот бред, что я строчил от безысходности ![]() Очень надеюсь на Вашу помощь. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 04.11.2012
Сообщений: 22
|
![]()
хотел уточнить насчет вывода: при вводе английского текста все работает отлично. при вводе именн кириллицы символы страдают. Например, при вводе строки "вот вот вот" выводит ў®в ў®в ў®в.
При просмотре кода символа, который я ввел можно увидеть, что из 4 символов кода остаются только 2, то есть 2 отбрасываются. Компилятор работает и записывает данные в кодировке ср866. Кстати, я забыл скинуть код, может ошибка где-то там: Код:
setlocale(LC_ALL, ".1251"); работает только для выводимого текста, то есть того, который выводится printf, cout-ами непосредственно из программы. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 639
|
![]()
1. обсуждалось
2. настраивайте консоль на локаль 1251 с помощью винапи 2 либо (что у меня работает лучше) используйте wcout, wcin и их настраивайте на .866 локаль через imbue Где-то читал, что setlocale не действует на cout.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 04.11.2012
Сообщений: 22
|
![]()
Ezhik Kihze, да, вы правы!
setlocale не действует на cout и другие способы вывода текста. Все дело в том, что для этого используются другие функции. Может, кому будет полезна информация: Это функции: Код:
Но, они поддерживают другой шрифт консоли. Вам нужно выбрать шрифт консоли(cmd) - этот: Lucida Console |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 639
|
![]()
На другие действует и не стоит всюду пихать ВинАПИ, с++ не только на винде бывает...
ICQ: 677936656 Gmail: ekEmbed@gmail.com
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
Вы же вроде сами сказали настроить с помощью винапи...
А мне вот интересно, почему кодировка 866 а устанавливается 1251? |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 639
|
![]()
Я привел это как один из вариантов, а также уточнил, что у меня он не очень работает и лучше использовать другой.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с кодировкой текста Delphi XE | bagabuga | Работа с сетью в Delphi | 4 | 27.02.2012 22:02 |
Проблема с кодировкой именно при сохранении текста в БД. | Leximus | БД в Delphi | 0 | 16.02.2012 11:56 |
Проблемы с кодировкой текста в Windows XP | Ivan_32 | Общие вопросы по Java, Java SE, Kotlin | 2 | 10.11.2010 21:18 |
трабла с кодировкой текста | MyLastHit | Общие вопросы Delphi | 10 | 23.08.2010 17:38 |
Неполадки с кодировкой русского текста. | 3dgraph | HTML и CSS | 3 | 14.07.2009 19:26 |