- Из за чего в консоли вместо русского языка выводятся вопросительные знаки?
- Знаки вопроса вместо русских букв, решение проблемы с кодировкой Windows
- Из за чего в консоли вместо русского языка выводятся вопросительные знаки?
- Vsesam
- Почему в PDO вопросительные знаки вместо русских букв при вставке данных в бд?
Из за чего в консоли вместо русского языка выводятся вопросительные знаки?
Простой 1 комментарий
Это практически первый вопрос, которым задаются юниоры С++, когда пытаются запустить свою первую консольную программу под виндой.
Ответов на него тут уже была целая пачка.
Суть в том, что в виндовой консоли может быть 2 русские кодировки (cp866 и cp1251) (не уверен, но может быть консоль винды научилась уже нормально работать с UTF8, если научилась, то считайте, что добавилась еще одна кодировка). Причем по умолчанию используется cp866. Кодировку консоли можно менять из самой консоли или программно.
При выводе текста в консоль никаких преобразований кодировок не происходит. В какой кодировке у вас написаны исходники — та и выводится. И если кодировка консоли и кодировка исходников не совпадают, то будет не читабельный текст.
Самый оптимальный и самый сложный вариант — в программе узнать кодировку консоли и перед выводом конвертировать текст в эту кодировку. Так же обратную операцию производить при вводе. В этом случае исходники программы лучше всего писать в UTF8 и использовать wchar_t.
Самый простой, дебильный и не всегда работающий (не будет работать если изменена кодировка консоли) — писать исходники в cp866.
Немного чуть более сложный, но не правильный — поменять кодировку консоли из программы на ту в которой написаны исходники.
Самый надежный вариант — не используйте русский в консольных программах — только английский. Сомневаюсь, что вам придется когда-то писать профессиональные консольные утилиты, которые бы умели адаптироваться к разным кодировкам, так что, возможно, нет смысла углубляться в эту тему. В GUI приложениях этой проблемы нет.
Источник
Знаки вопроса вместо русских букв, решение проблемы с кодировкой Windows
Заметил на одном компьютере что вместо русских букв в командной строке да и в некоторых программах отображаются знаки вопроса.
В первую очередь необходимо убедиться, что языком системы выбран русский язык, для этого в «Пуск» — «Панель управления» — «Часы, язык и регион» — «Язык и региональные стандарты«, вкладка «Дополнительно«, раздел «Язык программ, не поддерживающих Юникод» необходимо нажать «Изменить язык системы» и выбрать «Русский (Россия)» и нажать «ОК» во всех окнах.
Также для решения проблемы откроем редактор реестра набрав в командной строке «regedit.exe«.
Командную строку можно открыть нажав по ярлыку в меню «Пуск» — «Все программы» — «Страндартные» — «Коммандная строка» или набрав «cmd» в поисковой строке меню «Пуск«.
В редакторе реестра необходимо открыть ветку:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
и изменить значения параметров 1250 (с c_1250.nls на c_1251.nls), 1251 (убедится что c_1251.nls), 1252 (с c_1252.nls на c_1251.nls).
Все, после перезагрузки компьютера русские буквы будут отображаться корректно.
Источник
Из за чего в консоли вместо русского языка выводятся вопросительные знаки?
Простой 1 комментарий
Это практически первый вопрос, которым задаются юниоры С++, когда пытаются запустить свою первую консольную программу под виндой.
Ответов на него тут уже была целая пачка.
Суть в том, что в виндовой консоли может быть 2 русские кодировки (cp866 и cp1251) (не уверен, но может быть консоль винды научилась уже нормально работать с UTF8, если научилась, то считайте, что добавилась еще одна кодировка). Причем по умолчанию используется cp866. Кодировку консоли можно менять из самой консоли или программно.
При выводе текста в консоль никаких преобразований кодировок не происходит. В какой кодировке у вас написаны исходники — та и выводится. И если кодировка консоли и кодировка исходников не совпадают, то будет не читабельный текст.
Самый оптимальный и самый сложный вариант — в программе узнать кодировку консоли и перед выводом конвертировать текст в эту кодировку. Так же обратную операцию производить при вводе. В этом случае исходники программы лучше всего писать в UTF8 и использовать wchar_t.
Самый простой, дебильный и не всегда работающий (не будет работать если изменена кодировка консоли) — писать исходники в cp866.
Немного чуть более сложный, но не правильный — поменять кодировку консоли из программы на ту в которой написаны исходники.
Самый надежный вариант — не используйте русский в консольных программах — только английский. Сомневаюсь, что вам придется когда-то писать профессиональные консольные утилиты, которые бы умели адаптироваться к разным кодировкам, так что, возможно, нет смысла углубляться в эту тему. В GUI приложениях этой проблемы нет.
Источник
Vsesam
Почему в windows 7 вместо русских букв знаки вопроса. Что делать? Как избавиться? В семёрке такой дефект обычно возникает при русификации программ.
Не всех конечно, но случается. Эта проблема возникает из-за двух причин: реестра и файла «c_1252.nls».
Чтобы вопросительные знаки вместо букв больше не появлялись, скачайте архив и запустите первый файл.
Многие неувязки сразу исчезнут (потребуется перезагрузка), но не все. Для большинства пользователей этого вполне достаточно.
А вот те, кто часто использует различные самостоятельно русифицированные программы, в некоторых элементах знаки вопроса вместо русских букв, будут появляться и дальше.
Особенно это касается шрифтов, хотя опции (названия) русифицированы будут нормально (например «AAA Logo 2010» или «Ulead GIF Animator 5»).
Когда писать (использовать шрифт) в них, то вместо букв знаки вопроса появляются. Чтобы такого не происходило, выполните следующее.
Откройте диск «С», внизу нажмите на папку «windows», в ней найдите «System32» и нажмите. Теперь постепенно перемещаясь в низ, остановитесь на «c_1251.nls».
Скопируйте его и поместите на рабочем столе. После этого вместо последней цифры 1, поставьте 2.
Просто переименуйте, чтобы получился «c_1252.nls». Когда сделаете, то чтобы вместо букв знаки вопроса не появлялись, его нужно заменить на тот, что находиться в системе.
Удалить старый и поставить новый просто — не получиться. Поэтому скопируйте переименованный и вставьте его в «System32» (можно перетаскиванием).
Система предложит вам вставить с заменой. Перезагрузите обязательно. Выберите этот вариант и больше появляться не будут вместо букв знаки вопроса.
Источник
Почему в PDO вопросительные знаки вместо русских букв при вставке данных в бд?
В php использую pdo для коннекта к бд, в php файле указано , в mysql везде стоит режим сравнения utf8_general_ci, использую такой код:
$db = new PDO(«mysql:host=localhost;dbname=site», «root», «123»);
$db->exec(«SET NAMES utf8»);
$stmt = $db->prepare(«INSERT INTO news (title, text, date) VALUES (?, ?, ?)»);
$stmt ->execute(array($_GET[‘title’], $_GET[‘txt’], $_GET[‘date’]));
И все равно в бд заходят вопросы вместо русских букв, почему?
- Вопрос задан более трёх лет назад
- 6678 просмотров
Оценить 3 комментария
у меня решилось все пересозданием бд
и перед запросом в бд делаю
mysql_query(«SET NAMES ‘utf8′»);
все
«в бд заходят» — это не слишком корректное описание проблемы.
Если все сделано именно так, как написано, то в БД входят нормальные символы. И надо тогда проверять, что при просмотре выбрана правильная кодировка.
Но скорее всего всё-таки где-то в базе utf8 не указана. «Везде», кстати никакого значения не имеет. Важно только то, что стоит в описании таблицы/полей. Посмотреть можно через
CREATE TABLE table_name
Подробнее можно почитать здесь: Проблемы с кодировкой в MySQL
К PDO эта проблема прямого отношения отношения не имеет.
PS. Не принципиально, но лучше задавать кодировку в DSN, а не отдельным запросом
Источник