| View previous topic :: View next topic |
| Author |
Message |
GGS
Joined: 12 Nov 2010 Posts: 26
|
Posted: Sun May 08, 2011 2:20 pm Post subject: |
|
|
В AkelPad.ini имею строку:
| Code: | | StatusUserFormat=0x%cH (%cd) | для показа кода символа в строке состояния.
Код символов от 0x00 по 0x7F отображается верно, а код символов с 0x80 по 0xFF какой-то странный. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4638
|
Posted: Sun May 08, 2011 3:57 pm Post subject: |
|
|
GGS
У меня все нормально. Код отображается юникодный (видимо ожидается, что код символов будет в ANSI). Посмотрите в HexSel, он отображает как ANSI, так и Unicode. |
|
| Back to top |
|
 |
GGS
Joined: 12 Nov 2010 Posts: 26
|
Posted: Sun May 08, 2011 6:20 pm Post subject: |
|
|
Instructor
Текст в кодировке 1251
латинская "o" 0x6F. В строке состояния вижу: 0x006F (111)
русская "о" 0xEE. В строке состояния вижу: 0x043E (1086)
Повторяю, текст НЕ юникодный.
| Quote: | | видимо ожидается, что код символов будет в ANSI | Да, а какой код нужно ожидать в НЕ юникодном формате текста.
Last edited by GGS on Sun May 08, 2011 6:34 pm; edited 1 time in total |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4638
|
Posted: Sun May 08, 2011 6:31 pm Post subject: |
|
|
GGS
Повторяю Код AkelPad'ом отображается юникодный, несмотря на то, что файл не юникодный (все файлы приводятся к юникоду при открытии). |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1431
|
Posted: Sun May 08, 2011 6:36 pm Post subject: |
|
|
Instructor
Тогда надо добавить код символа в текущей кодировке.
Только юникод не убирайте.  |
|
| Back to top |
|
 |
GGS
Joined: 12 Nov 2010 Posts: 26
|
Posted: Sun May 08, 2011 6:38 pm Post subject: |
|
|
Instructor
Хочется видеть истинный код символа, тот который в файле, а не то как его выводит при открытии AkelPad.
| Quote: | | %cH Шестнадцатиричный код текущего символа в верхнем регистре | Так написано в Справке, никаких упоминаний про юникодность всего, что выше 0x7F. |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1888 Location: Vinnitsa, Ukraine
|
Posted: Sun May 08, 2011 7:07 pm Post subject: |
|
|
| Quote: | | Хочется видеть истинный код символа, тот который в файле, а не то как его выводит при открытии AkelPad. | 1. Ну для этого существуют бинарные редактора. Для них содержимое - последовательность байт. Для нас(для АР) содержимое файла - последовательность текстовых символов(в любом представлении, о котором договорилось сообщество, и если не ошибаюсь, то некоторые символы могут занимать вплоть до 16 байт).
2. Кто Вам сказал, что АР помнит каждый байт исходного открытого документа? Как уже сказал инструктор, весь текст хранится и обрабатывается АР в Юникоде.
Так что придется Вам мирится. | Quote: | | Так написано в Справке, никаких упоминаний про юникодность всего, что выше 0x7F. | А это по Вашему | Quote: | | латинская "o" 0x6F. В строке состояния вижу: 0x006F (111) | не Юникодность? Ничего о Юникодности >0x7F не сказано, потому что Юникодно всё(и уж давно пора привыкнуть, что в WindowsNT Юникодно всё по-умолчанию, как и в 99% современных ОС). |
|
| Back to top |
|
 |
GGS
Joined: 12 Nov 2010 Posts: 26
|
Posted: Sun May 08, 2011 8:53 pm Post subject: |
|
|
FeyFre
| Quote: | | весь текст хранится и обрабатывается АР в Юникоде | ... и это правильно. Я ничего против, собственно, юникодности не имею.
Вы, вероятно, не поняли, что я говорю о статусной строке (%cH) и показе истинных кодов имеющихся в ANSI файлах при ANSI же режиме просмотра. |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1888 Location: Vinnitsa, Ukraine
|
Posted: Sun May 08, 2011 10:00 pm Post subject: |
|
|
| GGS, я понял о чем Вы говорите. И это ничего не меняет. АР открыл файл, определил кодировку, прочитал текст, конвертнул его в Юникод и всё. Акел забыл как оно лежало в файле, он помнит только как это нужно положить, не более(в какой кодировке). И не факт что положит точно в том виде, в котором взял. И в Статус буде писаться тот код, о котором помнит Акел - Юникодный. |
|
| Back to top |
|
 |
GGS
Joined: 12 Nov 2010 Posts: 26
|
Posted: Mon May 09, 2011 4:13 am Post subject: |
|
|
FeyFre
| Quote: | | И не факт что положит точно в том виде, в котором взял. | IMHO, в Статусе должна быть возможность видеть тот код, "который взял".
Вот пример Статуса (шесть последовательных кодов) из charmap.exe (Таблица символов):
| Code: | U+007D (0x7D)
U+007E (0x7E)
U+0402 (0x80)
U+0403 (0x81)
U+201A (0x82)
U+0453 (0x83)
U+201E (0x84) | Естественно, при ANSI просмотре я ожидаю увидеть правую колонку этого примера, а не "разнобой" как в левой. Или и то и другое, как в charmap.exe
Напрашивается введение параметров %cu/%cU в дополнение к %ch/%cH
P.S. FeyFre, я говорю что и для чего я вижу, а Вы мне о том почему я это вижу.
P.P.S. На этом заканчиваю, надеюсь Instructor понимает что я говорю. Решать ему. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4638
|
Posted: Mon May 09, 2011 5:11 am Post subject: |
|
|
GGS
Есть одна проблема как отобразить Ansi. Например, UTF-8 файл буква "Б" Ansi код "\xD0\x91". |
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 723 Location: Kyiv, Ukraine
|
Posted: Mon May 09, 2011 1:41 pm Post subject: |
|
|
| Instructor wrote: | GGS
Есть одна проблема как отобразить Ansi. Например, UTF-8 файл буква "Б" Ansi код "\xD0\x91". |
Раз уж пошла такая пьянка то можно было бы сделать так: показывать в строке статуса результат WideCharToMultiByte для кодировки текущего документа в качестве параметра UINT CodePage. Т.е. как раз "\xD0\x91" для "Б" в UTF-8, и один байт для ANSI. |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1888 Location: Vinnitsa, Ukraine
|
Posted: Mon May 09, 2011 2:05 pm Post subject: |
|
|
DV
А что делать с комбинированными символами? ЕМНИП, то в стандарте предусмотрено 6 дополнительных компонентов символа(всякие черточки и точечки по бокам символов). Например есть основной символ, и три черточки. Какой именно код нужно будет показать? |
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 723 Location: Kyiv, Ukraine
|
Posted: Mon May 09, 2011 5:27 pm Post subject: |
|
|
| FeyFre wrote: | | Какой именно код нужно будет показать? |
Код основного символа?
А вообще я с таким пока не сталкивался. Не так давно я был уверен, что максимальная длина символа составляет 3 байта [некоторые символы в UTF-8], пока не узнал о "суррогатных" символах, которые в UTF-8 представляются 4 байтами.
http://ru.wikipedia.org/wiki/UTF-8Замечание: Символы, закодированные в UTF-8, могут быть длиной до шести байт, однако стандарт Unicode не определяет символов выше 0x10ffff, поэтому символы Unicode могут иметь максимальный размер в 4 байта в UTF-8. |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1888 Location: Vinnitsa, Ukraine
|
Posted: Mon May 09, 2011 6:09 pm Post subject: |
|
|
DV
UTF8 вообще-то по стандарту определенно и для 4-байтовых комбинаций(а технически рассчитано и для 6 байтовых), и это не суррогаты. Суррогаты - это когда глиф кодируется двумя кодам: основным символом и доп. элементами.
Код основного символа некорректно. Например для если буквы "Ё" представить только код "Е" без кода двух точек, то получается немного не то. Также для буквы "Ї" = І + двоеточие сверху.
Это нам то повезло. А в немецких языках: A U O против Ä Ö Ü и aeoiuy против áéóíúý - содержимое то меняется. |
|
| Back to top |
|
 |
|