Так как WebMoney Keeper WinPro не поддерживает Unicode, то возможно именно такая проблема.

Она решается следующим образом:

  • если у вас нет установочного диска WINDOWS, то скачайте файл архива с русскими шрифтам и распакуйте его в папку c:
    u_fonts
  • нажмите кнопку Start (обычно она находится в нижнем левом углу)
  • выберите Control Panel, а затем Regional And Language Options
  • в появившемся диалоге выберите закладку "Advanced"
  • В группе Language for non-Unicode programs выберите Russian и нажмите кнопку Apply
  • Появится диалог (см. ниже) — нажмите NO
Advanced
The required files are already installed on your hard disk. Setup can use these existing files, or Setup can recopy them from your original Windows CD-ROM or from a network share.
Would you like to skip file copying and use the existing files? (If you click No, you will be prompted to insert your Windows CD-ROM or to supply an alternate location where the needed files may be found.)
[Yes][ No ]
  • Появится диалог Insert Disk — нажмите OK
  • Появится диалог Files Needed — нажмите Browse…
  • Выберите папку c:
    u_fonts
    , нажмите Open
  • Появится диалог Files Needed — нажмите OK
  • Появится диалог (см. ниже) — нажмите Yes
Change Regional Options
You must restart your computer before the new settings will take effect.
Do you want to restart your computer now?
[Yes][ No ]

На операционной системе Windows 7 необходимо выполнить следующие действия:

Пуск-> Панель управления -> Часы, Язык, и регион -> Язык и региональные настройки -> Изменение языка интерфейса -> вкладка Дополнительно -> изменить язык системы . -> установить "Русский".

На операционной системе Windows 8 необходимо выполнить следующие действия:

На рабочем столе провести мышкой по правой стороне экрана сверху вниз появится меню справа, нажать поиск и набрать Панель управления. Далее Часы, Язык, и регион -> Изменение форматов даты, времени и чисел -> вкладка Дополнительно -> изменить язык системы . -> установить "Русский".

На операционной системе Windows 10 необходимо выполнить следующие действия:

Пуск -> Параметры -> Время и язык -> Дополнительные настройки даты и времени, региональные параметры -> Региональные стандарты -> Изменение расположения -> вкладка Дополнительно -> установить "Русский" .

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

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

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

В редакторе реестра необходимо открыть ветку:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsCodePage
и изменить значения параметров 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_MACHINESYSTEMCurrentControlSetControlNlsCodePage]
“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 ; -^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-

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