Windows 7 вместо букв одни вопросы

Знаки вопроса вместо русских букв, решение проблемы с кодировкой Windows

Заметил на одном компьютере что вместо русских букв в командной строке да и в некоторых программах отображаются знаки вопроса.

В первую очередь необходимо убедиться, что языком системы выбран русский язык, для этого в «Пуск» — «Панель управления» — «Часы, язык и регион» — «Язык и региональные стандарты«, вкладка «Дополнительно«, раздел «Язык программ, не поддерживающих Юникод» необходимо нажать «Изменить язык системы» и выбрать «Русский (Россия)» и нажать «ОК» во всех окнах.

Также для решения проблемы откроем редактор реестра набрав в командной строке «regedit.exe«.
Командную строку можно открыть нажав по ярлыку в меню «Пуск» — «Все программы» — «Страндартные» — «Коммандная строка» или набрав «cmd» в поисковой строке меню «Пуск«.

В редакторе реестра необходимо открыть ветку:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
и изменить значения параметров 1250c_1250.nls на c_1251.nls), 1251 (убедится что c_1251.nls), 1252c_1252.nls на c_1251.nls).

Все, после перезагрузки компьютера русские буквы будут отображаться корректно.

Источник



Знаки вопроса вместо русских букв, кракозябры или неверная кодировка

Как это не странно, но во времена UNICODE все еще встречается проблема знаками вопроса или кракозябрами вместо кириллицы (русских букв).

Проблема наблюдается в программах с русскоязычным интерфейсом, которые написаны на Delphi 7, вместо русских букв показывают знаки вопроса. Перевод проекта под UNICODE-версию Дельфи (2010 или 2009) практически не возможен, так как в нем используются компоненты, которые не имеют новых UNICODE-совместимые версии (авторы больше не поддерживают компоненты).

Удивляет не то, что GUI программ не показывает русские буквы, а то, что вместо кракозябр показываются знаки вопроса. Кракозябры — это символы текущей кодировки, с теми же кодами, что у нужных нам русских букв. Знаки вопроса обычно появляются когда у системы не получается сопоставить используемый символ UNICODE (к примеру, русская буква из UNICODE) с символом теперешней кодировки.

ОС Windows 7, Windows Vista и Windows XP имеют настройку локалей. Она находиться по адресу: Панель Управления->Язык и национальные стандарты-> последняя вкладка «Дополнительно». Там можно указывать язык для программ, которые не поддерживают Юникод. По логике, после выбора, в этой вкладке, русского языка, программа должна правильно показывать русские буквы. Но на деле русские буквы отображаются только в компонентах ColorBox и в шапке программы. Во всех других компонентах интерфейса отображаются все те же знаки вопроса.

Странно, но проблему решит другая настройка: Панель Управления->Язык и национальные стандарты->Региональные параметры». Эта вкладка отвечает за формат денежных единиц, чисел, дат и времени. И вроде бы не имеет отношения к кодировкам. Но все-таки, если установить значение «Русский, Россия», то знаки вопроса исчезнут и интерфейс программы начнет показывать либо русские буквы, либо кракозябры, в зависимости от того, какая локаль указана на вкладке «Дополнительно».

Читайте также:  Три причины участвовать в наших викторинах

Ниже приводятся результаты разных комбинаций этих двух настроек в ОС Windows, начиная с XP:

Формат: США
Локаль: США
Итог: Всюду знаки вопроса

Формат: США
Локаль: Россия
Итог: В шапке и колорбоксах русские символы, во всем другом знаки вопроса

Формат: Россия
Локаль: США
Итог: Везде «крякозябры»

Формат: Россия
Локаль: Россия
Результат: Все хорошо!

Также, если не помогает, можно советует делать следующее: сбросить поле Format в English (United Sates) и вернуть обратно в Russian (Russia), или еще цитата: «Мне помогла смена формата сначала на английский, потом выход из системы, вход в систему и установка формата в русский»

Ну и способ с редактированием реестра (именно он в последнее время чаще всего выручает):

Запускайте REGEDIT и редактируйте на:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
“1250″=”c_1251.nls”
“1252″=”c_1251.nls”

Обсуждение записи “Знаки вопроса вместо русских букв, кракозябры или неверная кодировка”

Огромное спасибо! Выручили)))

Отлично! Нужно было переделать другу какой-то проэкт в Delphi 7 —

Формат: Россия
Локаль: Россия
Результат: Все хорошо!

Большое спасибо! в настройках везде стояло Русский, но шрифты в программе были в вопросиках. В региональных настройках выставил Татарский(русский)И шрифты появились. Вернул на обычный русский и все ровно все ок!

на сайте по всюду знаки вопроса, как в исходном коде декодировать на кириллицу? manuals4you.narod.ru/

Евгений, судя по тому, что код символов у этих знаков вопросов одинаков — уже никак. Если вдруг найдете методы, то поделитесь, пожалуйста =)

Все получилось. Но, буквально через 5 минут опять вопросы. Что это может быть? А получилось после того как поменяла на английский и обратно. Через реестр вообще ничего не произошло. Это происходит на одном сайте. Подскажите, что можно еще сделать.

1)работаю delphi 7. Dbexpress (sqlconnect и sqlquery). установил sqlite драйвер для работы с базой данных.
2)при обращении в БД запросом, вместо русского текста возвращает знаки вопроса. При записи в БД через delphi русского текста, он сохраняется кракозябрами в бд, но считывается нормально обратно.
3) ни один из способов не помог.

помогло преобразование типов в самом запросе! cast (name as blob) name (был text, стал blob). Удобно, но пока есть проблемы со случаями наличия в русском тесте чисел (русские буквы пропадают).

реальное огромное спасибо за помощь. сам врядли мы дошел до этого.

Только «странным» методом и удалось заставить показывать текст программу с сайта gosuslugi.ru, программисты с которого в 2016 году почему-то выкладывают для общего обязательного пользования программы, написанные на кривом Дельфи.

проблема известная, сам я её решал таким образом:
внутри System::initialization(void) есть вызов GetThreadLocale
перед этим проверяют версию системы (полученную от GetVersion)
и там ставят кодовую страницу 3, которую надо заменить на 0
(предполагаю что это CP_THREAD_ACP которое заменяется на CP_ACP)
в результате программа начинает работать правильно выводя все строки
ещё иногда приходится заменять в ресурсах DEFAULT_CHARSET на RUSSIAN_CHARSET

Читайте также:  Библиотечный урок Мы читаем о войне

обратите внимание на «CODE:0040653C», вот это оно и есть.

CODE:004064A0 ; _DWORD __cdecl System::initialization()
CODE:004064A0 __fastcall System::initialization(void) proc near
CODE:004064A0 sub ds:dword_4945B8, 1
CODE:004064A7 jnb locret_406572
CODE:004064AD mov ds:byte_492008, 2
CODE:004064B4 mov ds:dword_494014, offset loc_40122C
CODE:004064BE mov ds:dword_494018, offset loc_40123C
CODE:004064C8 mov ds:byte_49404A, 2
CODE:004064CF mov ds:dword_494000, offset loc_4053EC
CODE:004064D9 call unknown_libname_51 ; BDS 2005-2007 and Delphi6-7 Visual Component Library
CODE:004064DE test al, al
CODE:004064E0 jz short loc_4064E7
CODE:004064E2 call unknown_libname_52 ; BDS 2005-2007 and Delphi6-7 Visual Component Library
CODE:004064E7
CODE:004064E7 loc_4064E7: ; CODE XREF: System::initialization(void)+40j
CODE:004064E7 call unknown_libname_53 ; BDS 2005-2007 and Delphi6-7 Visual Component Library
CODE:004064EC mov ds:word_494050, 0D7B0h
CODE:004064F5 mov ds:word_49421C, 0D7B0h
CODE:004064FE mov ds:word_4943E8, 0D7B0h
CODE:00406507 call GetCommandLineA
CODE:0040650C mov ds:dword_49403C, eax
CODE:00406511 call unknown_libname_12 ; BDS 2005-2007 and Delphi6-7 Visual Component Library
CODE:00406516 mov ds:dword_494038, eax
CODE:0040651B call GetVersion
CODE:00406520 and eax, 80000000h
CODE:00406525 cmp eax, 80000000h
CODE:0040652A jz short loc_406559
CODE:0040652C call GetVersion
CODE:00406531 and eax, 0FFh
CODE:00406536 cmp ax, 4
CODE:0040653A jbe short loc_406548
CODE:0040653C mov ds:CodePage, 3 ; 0
CODE:00406546 jmp short loc_406568
CODE:00406548 ; —————————————————————————
CODE:00406548
CODE:00406548 loc_406548: ; CODE XREF: System::initialization(void)+9Aj
CODE:00406548 call GetThreadLocale
CODE:0040654D call unknown_libname_100 ; BDS 2005-2007 and Delphi6-7 Visual Component Library
CODE:00406552 mov ds:CodePage, eax
CODE:00406557 jmp short loc_406568
CODE:00406559 ; —————————————————————————
CODE:00406559
CODE:00406559 loc_406559: ; CODE XREF: System::initialization(void)+8Aj
CODE:00406559 call GetThreadLocale
CODE:0040655E call unknown_libname_100 ; BDS 2005-2007 and Delphi6-7 Visual Component Library
CODE:00406563 mov ds:CodePage, eax
CODE:00406568
CODE:00406568 loc_406568: ; CODE XREF: System::initialization(void)+A6j
CODE:00406568 ; System::initialization(void)+B7j
CODE:00406568 call GetCurrentThreadId
CODE:0040656D mov ds:dword_494030, eax
CODE:00406572
CODE:00406572 locret_406572: ; CODE XREF: System::initialization(void)+7j
CODE:00406572 retn
CODE:00406572 __fastcall System::initialization(void) endp
CODE:00406572
CODE:00406572 ; —————————————————————————
CODE:00406573 align 4
CODE:00406574 ; [00000006 BYTES: COLLAPSED FUNCTION GetModuleHandleA_0]
CODE:0040657A align 4
CODE:0040657C ; [00000006 BYTES: COLLAPSED FUNCTION LocalAlloc_0]
CODE:00406582 align 4
CODE:00406584 ; [00000006 BYTES: COLLAPSED FUNCTION TlsGetValue]
CODE:0040658A align 4
CODE:0040658C ; [00000006 BYTES: COLLAPSED FUNCTION TlsSetValue]
CODE:00406592 align 4

На всякий случай вот это же место с сигнатурами (чтобы можно было попасть поиском сразу куда надо и пропатчить, место .0040653C уже изменено с 3 на 0):
.0040651B: E834AEFFFF call GetVersion — 8
.00406520: 2500000080 and eax,080000000 ;’ ‘
.00406525: 3D00000080 cmp eax,080000000 ;’ ‘
.0040652A: 742D jz .000406559 — 9
.0040652C: E823AEFFFF call GetVersion — 8
.00406531: 25FF000000 and eax,0000000FF ;’ ‘
.00406536: 6683F804 cmp ax,4
.0040653A: 760C jbe .000406548 — A
.0040653C: C705BC45490000000000 mov d,[0004945BC],0 ; was 3
.00406546: EB20 jmps .000406568 — B
.00406548: E87FADFFFF Acall GetThreadLocale — C
.0040654D: E886FEFFFF call .0004063D8 — D
.00406552: A3BC454900 mov [0004945BC],eax
.00406557: EB0F jmps .000406568 — B
.00406559: E86EADFFFF 9call GetThreadLocale — C
.0040655E: E875FEFFFF call .0004063D8 — D
.00406563: A3BC454900 mov [0004945BC],eax
.00406568: E8DFADFFFF Bcall GetCurrentThreadId — E
.0040656D: A330404900 mov [000494030],eax
.00406572: C3 retn ; -^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-

Невероятнейшее преогромнейшее благодарю автору!
А проблема эта, просто невероятнейший дебилизм, не знаю чей…

Читайте также:  Все вопросы про котов

Источник

Что делать если вместо букв появляються знаки вопроса

Почему в windows 7 вместо русских букв знаки вопроса. Что делать? Как избавиться? В семёрке такой дефект обычно возникает при русификации программ.

Не всех конечно, но случается. Эта проблема возникает из-за двух причин: реестра и файла «c_1252.nls».

Чтобы вопросительные знаки вместо букв больше не появлялись, скачайте архив и запустите первый файл.

Многие неувязки сразу исчезнут (потребуется перезагрузка), но не все. Для большинства пользователей этого вполне достаточно.

А вот те, кто часто использует различные самостоятельно русифицированные программы, в некоторых элементах знаки вопроса вместо русских букв, будут появляться и дальше.

Особенно это касается шрифтов, хотя опции (названия) русифицированы будут нормально (например «AAA Logo 2010» или «Ulead GIF Animator 5»).

Когда писать (использовать шрифт) в них, то вместо букв знаки вопроса появляются. Чтобы такого не происходило, выполните следующее.

Откройте диск «С», внизу нажмите на папку «windows», в ней найдите «System32» и нажмите. Теперь постепенно перемещаясь в низ, остановитесь на «c_1251.nls».

Вместо букв знаки вопроса

Скопируйте его и поместите на рабочем столе. После этого вместо последней цифры 1, поставьте 2.

Просто переименуйте, чтобы получился «c_1252.nls». Когда сделаете, то чтобы вместо букв знаки вопроса не появлялись, его нужно заменить на тот, что находиться в системе.

Удалить старый и поставить новый просто — не получиться. Поэтому скопируйте переименованный и вставьте его в «System32» (можно перетаскиванием).

Система предложит вам вставить с заменой. Перезагрузите обязательно. Выберите этот вариант и больше появляться не будут вместо букв знаки вопроса.

Источник

Windows 7 вместо букв одни вопросы

Если у вас операционная система Windows 7, в программах вместо русских букв отображаются вопросительные знаки ". ", это очевидно проблема с кодировкой.

действия в данном случае:

Для начала, зайдите в пуск — панель управления — языки региональные стандарты — переходим по всем вкладкам и смотрим, чтобы везде стоял Русский. А самое главное, в последней 4-ой вкладке "Дополнительно", смотрим Язык программ не поддерживающих unicod: ниже должен стоять Русский.

Далее, нажимаем Пуск, внизу в поле для поиска набираем regedit, сверху видим regedit.exe, нажимаем по нему правой кнопкой мыши и выбираем запуск от имени администратора.

В открывшемся окне, проходим в ветку реестра:
Цитата:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Cont ro l\Nls\CodePage]
в правой стороне окна, находим строки и смотрим их значение:

Вам нужно вместо выделенных цифр поставить значение 1, т.е. в поле значение должно быть написано c_1251.nls.

Для этого делаем 2-ой щелчок мыши на каждой из этих строк и меняем значение на с_1251.nls.

В итоге должно получиться так:

"1250" имеет значение "c_1251.nls"
"1252" имеет значение "c_1251.nls"
закрываем реестр и перезагружаем компьютер.
Проверяем результат.

Вариант 2.
Можно заменить шрифты в папке c:\Windows\fonts предварительно скачав оригинальные шрифты для windows 7 архив со стандартными шрифтами можно скачать тут :
Авторизуйтесь, для доступа к ссылке
———

Источник