Отправляет email-рассылки с помощью сервиса Sendsay

[TC] проблема с jaws 7.00

Здравствуйте...
Возникла такая проблемка - jaws v7.00 не читает консольные приложения,
точнее, он их читает, но читает иероглифами.
Я пробовал написать на C++ программу, которая бы выводила текст в
консольном окне, но делала это в вин кодировке - тоесть, на экране
отображаются иероглифы, но зато джавс читает как ни в чём не бывало.
Тоесть, не сложно догадаться, что и нормальную дос кодировку, которая
видна простому человеческому глазу он тоже пытается прочесть как вин
кодировку.
Подскажите плиз, как решить эту проблему.
--
С уважением,
Алексей mailto:romasho***@y*****.ru
Новосибирск.

Ответить   Алексей Fri, 16 Jun 2006 01:00:09 +0700 (#561448)

 

Ответы:

Здравствуйте, Алексей.

Честно скажу, не понял, какую проблему вы хотите решить: чтение джозом консольного
окна или написание программы на C,
перекодирующую oem кодировку в ANSI? Поэтому отвечаю на первую часть.
Если вы уверены, что это именно oem кодировка, надо либо сменить шрифт на Lucida
Console (подробнее тут:
http://www.freedomscientific.com/fs_support/BulletinView.cfm?QC=907

), либо перенаправить вывод в файл, который потом вы прочитаете текстовым редактором,
поддерживающим oem-кодировку.
Успехов. Анатолий.

Ответить   "i_chay" Fri, 16 Jun 2006 11:05:24 +0500 (#561549)

 

i_chay <i_ch***@r*****.ru> writes:

А что такое перекодирование OEM-кодировки в ANSI? Мне в основном про ANSI
непонятно.

Ответить   Dmitriyi Paduchikh Fri, 16 Jun 2006 19:34:57 +0600 (#561684)

 

Здравствуйте, Дмитрий.

= dos в win-xxxx.
В win16 для этого использовалась функция OemToAnsi, а в win32 OemToChar.

Анатолий.

Ответить   "i_chay" Fri, 16 Jun 2006 20:46:48 +0500 (#561718)

 

i_chay <i_ch***@r*****.ru> writes:

Да, теперь понятно, спасибо за пояснение. Только ведь win32 сейчас
доминирует, так что лучше, наверное, говорить о перекодировании
OEM-кодировки в Char.

Ответить   Dmitriyi Paduchikh Sat, 17 Jun 2006 00:16:11 +0600 (#561754)

 

Здравствуйте, Дмитрий.

От этого она не перестает быть ANSI:
"Ядро Windows NT, ее графический интерфейс (GDI) и файловая система NTFS реализованы
с использованием Unicode. Программы,
запущенные в среде NT, могут работать
также с однобайтовыми символами, кодировка которых в этом случае соответствует
установленной по умолчанию кодовой странице ANSI
(для России - Windows Cyrillic,
или CP 1251).

Перед вызовом некоторых функций программного интерфейса NT программы, работающие
с кодовой страницей ANSI, преобразуют
однобайтовые символы в Unicode. Чтобы
преобразование выполнялось без ошибок, пользователь должен правильно указать
страну в приложении Regional Settings. Это необходимо
также для корректной
работы с национальными символами программ, запущенных в сеансе MS-DOS; они используют
кодовую страницу OEM, которая не всегда
совпадает со страницей Windows
(в частности, для России это CP 866)."
http://old.osp.ru/pcworld/1998/11/134.htm

В смысловом плане, кодировки oem - это то, что было до унификации 8 битных кодировок,
а кодировки ANSI - это то, что стало после
их унификации соответствующим институтом.
Анатолий.

Ответить   "i_chay" Sat, 17 Jun 2006 10:23:04 +0500 (#561850)

 

i_chay <i_ch***@r*****.ru> writes:

Вообще-то, ваш предыдущий ответ превосходно объясняет использование этой
ANSI-терминологии, в том числе и в приведённом вами отрывке.

[...]

Если же говорить о том, действительно ли кодировки windows-xxxx были
стандартизованы ANSI, то ваш отрывок несущественен, поскольку не содержит ни
одной ссылки на стандарт. Когда говорят об ANSI C, имеют в виду стандарт
ANSI X3.159-1989. Что имеют в виду, когда говорят о том, что кодировки
Windows - это ANSI? Честно говоря, я был бы удивлён, если б оказалось, что
windows-1251 является ANS (американским национальным стандартом). По-моему,
такими вещами занималась ISO, породив, в частности, наборы знаков iso-8859-5
и iso-10646 (почти то же самое, что Unicode). Скорее всего, кодировки
Windows - это всё-таки корпоративный стандарт MS, что опять возвращает нас к
объяснению, которое вы дали в вашем предыдущем письме.

Ответить   Dmitriyi Paduchikh Sat, 17 Jun 2006 12:53:53 +0600 (#561894)

 

Здравствуйте, Дмитрий.

Возможно, я не совсем точно выразился, но я не утверждал, что кодировки win являются
стандартом ANSI. Смысл фразы заключался в
том, что ANSI своим стандартом
ANSI INCITS 4-1986 (R2002)
унифицировала использование 8-битных кодов для представления символов.

Приведенный в предыдущем письме отрывок должен был проиллюстрировать традиционное
(по мнению некоторых некорректное)
использование сочетания кодировка Windows ANSI в соответствующем контексте. Когда
используют это сочетание, то подразумевают
приблизительно такую вот длинную и замысловатую сентенцию: "таблица 8-битных
кодов символов, основанная на (базирующаяся на,
производная от) стандарте (стандарта) ANSI. И изменение имен функций в WinAPI
никак не повлияли на эту формулировку.
Похожая (в смысле сокращенного словоупотребления) ситуация с выражением "сеть
интернет", которое на первый взгляд кажется
абсурдным, но означает "сеть, организованная на базе протокола межсетевого взаимодействия
(internet protocol)..."

Однако и ISO в качестве отправной точки использовала вышеупомянутый стандарт
ANSI.

Возможно и так. Я не знаю,по какому стандарту организован документооборот в Microsoft.

Ну я от него никуда не уходил.
Анатолий.

Ответить   "i_chay" Sun, 18 Jun 2006 07:11:03 +0500 (#562302)

 

i_chay <i_ch***@r*****.ru> writes:

Насколько я понял[1], это стандарт ASCII, набор 7-битных знаков с кодами от
0 до 127. То есть, по-вашему, это просто такой замаскированный способ
говорить, что кодовые страницы MS основаны на ASCII? Но ведь IBM-овские
кодировки для DOS в этом смысле ничем не хуже. Тем не менее они "OEM".

Мне тут удалось кое-что найти[2] об этом в Википедии. Там пишут, что MS для
своей кодовой страницы 1252 использовала черновой вариант ANSI стандарта ISO
8859-1 (ANSI входит в состав ISO). Но не просто так, а творчески его
переработав. То же самое они сделали и с некоторыми другими кодовыми
страницами. Так что кодировки MS в некотором смысле действительно "ANSI",
хотя и в кавычках, потому что связь тут не столь прямолинейная, как это
обычно бывает, когда речь идёт о стандартах.

Footnotes:
[1] http://tinyurl.com/pbbg2

[2] http://tinyurl.com/lhh28#Windows_.28ANSI.29_code_pages

Ответить   Dmitriyi Paduchikh Sun, 18 Jun 2006 16:27:43 +0600 (#562350)

 

Здравствуйте, Дмитрий.

Не уловил идеи этой сентенции, поэтому поясняю, как понял.
0. Большинство 8-битовых кодировок основано на ASCII, то есть используют в младших
128 кодах эту таблицу.
1. Использование 7-битных кодов регламентирует стандарт ANSI X3.4 (в просторечии
- ASCII).
2. ANSI INCITS 4-1986 (R2002) - является расширением п.1. и регламентирует использование
старших 128 кодов.
3. Ibm - кодировка ничем не хуже. Просто она существовала до появления п.2. и,
соответственно, никак не могла быть связана с ANSI
(разве, если только ANSI приняла бы ее в качестве стандарта). А кодировка Windows
ANSI появилась позже.

Кстати, и ISO брала для своих 8-битовых кодировок ту же cp1252 (назовем ее условно
так).

Анатолий.

Ответить   "i_chay" Sun, 18 Jun 2006 16:07:18 +0500 (#562359)

 

Доброго времени суток, все.
А чем отличается codePage 1251 от 1252?

Эдик. Новокузнецк.
winks***@r*****.ru

Ответить   Sun, 18 Jun 2006 21:10:56 +0800 (#562381)

 

эдуард <winks***@r*****.ru> writes:

1251 содержит кириллицу. 1252 - разные знаки, используемые в западных
странах. В основном это латиница со всякими диакритическими значками:
умляутами, акцентами, циркумфлексами и т.д. Кроме того в них есть и
другие знаки. Например, первые 128 знаков у них совпадают - они
соответствуют набору знаков ASCII.

Ответить   Dmitriyi Paduchikh Sun, 18 Jun 2006 19:58:57 +0600 (#562388)

 

Доброго времени суток, Дмитрий.
Original Message > 1251 содержит кириллицу. 1252 - разные знаки, используемые в западных

Просто в программе XPTveaker есть опция "использовать вместо 1251, 1252".
Вот я и подумал, что 1252- это более совершенная редакция CodePage 1251.
А правда, в каком смысле, использовать вместо?
Что интересно, на моем компьютере выставлена эта опция.

Эдик. Новокузнецк.
winks***@r*****.ru

Ответить   Tue, 20 Jun 2006 07:20:08 +0800 (#562818)

 

Приветствую, эдуард!

Вы писали:

В том смысле, что в локализованных ОС может неверно отображаться
шрифт.
Пример? Пожалуйста.
У меня Windows XP Pro SP 2 US English. В ней, например, не
отображаются русские меню в таких программах, как TheBat! 3.6, MKey
0.9.7.2 etc.
Выход? Заменить Win-1252 на win-1251. Только того, что я сделать этого
не могу: мне нужны французский и немецкий, и даже побольше, чем
русский в программах).

Ответить   Tue, 20 Jun 2006 07:20:50 +0400 (#562838)

 

Здравствуйте, i_chay.

Вы писали 17 июня 2006 г., 12:23:04:
К сожалению, обсуждение поднятой мной темы далеко уже ушло за то, что
я пытался выяснить.
с C++ у меня всё нормально - и с её кодировками тоже, но джавс просто
сам по себе консольные окна читает иероглифами, хотя судя по словам
зрячих написано всё нормально, но когда я запускаю собственную
программу на C++, в которой я умышлено пишу в операторе cout<<"<<endl;
текст в вин кодировке, то зрячие конечно - же видят всё иероглифами,
но зато джозу сие творение становится очень даже внятным и
читабельным.

Ответить   Алексей Sun, 18 Jun 2006 01:06:42 +0700 (#562167)

 

Здравствуйте, Алексей.

А разве рекомендация Freedom сменить шрифт в консольном окне на Lucida Console
не помогает?
Успехов. Анатолий.

Ответить   "i_chay" Sun, 18 Jun 2006 12:18:13 +0500 (#562309)