Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Дата: Вт, 01 Сентября 2009, 15:19 | Сообщение # 92
Друг клуба ММВ
Проверенные
Сообщений: 2713
Offline
С "этим" нет никаких проблем, а в плане плагинописания, делаю только то что мне интересно сделать, и только тогда когда на это есть время и вдохновление. По сути, кодировки это не есть что то сложное, тем более это не интересно, простые табличные преобразования, если делать руцями, или применить системные функции.
Дата: Вт, 08 Сентября 2009, 13:07 | Сообщение # 94
Друг клуба ММВ
Проверенные
Сообщений: 2713
Offline
Quote (Alien)
У меня при ответе данных POST когдировка кирилицы искажается
POST или гет это только методы передачи данных от клиента серверу, и кодировка ответа не зависит от применяемого метода, если конечно в серверном сценарии специально не предусмотрена такая фича. Сколько можно повторять, что при перекодировке следует работать с кодами символов а не с самими символами, изображение символа может быть одинаково, а их кода разными. Правильное определение пришедшей кодировки залог для правильной конвертации. Корректность преобразований можно определить в хекс редакторе.
Дата: Вт, 08 Сентября 2009, 13:27 | Сообщение # 95
Удаленные
Quote (Alex3A)
POST или гет это только методы передачи данных от клиента серверу, и кодировка ответа не зависит от применяемого метода, если конечно в серверном сценарии специально не предусмотрена такая фича.
Это ты к чему? Я просто сказал что это от ответа post, а не при открытии какого то файла.
Дата: Вт, 08 Сентября 2009, 13:35 | Сообщение # 96
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
Это к тому, что надо вначале узнать, в какой кодировке возвращаются данные post (может, вообще кириллица не поддерживается кодировкой, вот и возвращает всякий мусор), а затем уже видно будет как перекодировать чтобы получить нормальную кириллицу. Как задавать вопросы
Дата: Вт, 08 Сентября 2009, 14:32 | Сообщение # 97
Друг клуба ММВ
Проверенные
Сообщений: 2713
Offline
Quote (DEMBEL)
в какой кодировке возвращаются данные post
Корректней будет - ответ сервера. То что пришло, сохрани в файл, без всяких изменений. Переименуй его в хтмл, загрузи в браузер, поиграйся с "вид - кодировка".
Дата: Вт, 08 Сентября 2009, 18:52 | Сообщение # 101
Друг клуба ММВ
Проверенные
Сообщений: 2713
Offline
1.Точно знать какая кодировка. 2.провести преобразования. сентября - двухбайтовый текст, каждая буква описана 2 байтами. Надо получить коды символов и преобразовать их в UTF8
В моем NB-проекте есть поля для вставки текста и предполагается, что пользователь из совершенно любых источников (их любых файлов, сайтов и пр., а значит в любой родной кодировке) должен скопировать в эти поля текст. Так вот, этот текст окажется в окне проги в кодировке 1251 или в своей родной кодировке?
Правильно ли я понимаю, что сама Windows в буфере обмена кодировку никак не пытается менять, а только "циферь" берет и отдаёт? Или правильнее было бы спросить: Копируется/Вставляется хекс или представление?
Или в момент вставки из буфера винда (в соответствии с кодировкой содержимого буфера) вставляет уже не цифирь, а само представление данных, в кодировке по умолчанию, т.е. в соответствии с "родной" кодировкой, но уже, на самом деле, в кодировке 1251? Таким образом в окне NB-проекта мы имеем представление данных, описанных некогда в какой-то кодировке, но теперь описанных в 1251?
Хех, что-то я накрутил... с вопросом..., без поллитры чаю не разобраться
При копировании, скажем так, копируются не символы а их коды, которые и есть текст, собственно надо различать кодировку символов и прочую требуху, кодировка это одно, ее можно проверить посмотрев варианты файла в хекс редакторе, к стати, во многих хексах есть возможность(с лева идут коды символов, с права их символьная интерпритация) просмотреть текст в разной интерпритации. 1251 и прочая вроде всегда были кодовые страницы, то есть, не кодировка а представление, то биш внешний вид символов. Представь себе пленку с кадрами, это таблица символов-код символа и его вид, на одном кадре(диапазон кодов) вырезано окошко, через которое протягивается другая пленка, содержащая внешний вид того или иного алфавита, которая продвигается по нужде, то есть продвинув ее мы получаем другой внешний вид для одних и тех же кодов. Таким образом,сам текст это просто коды, которые тож имеют определенную систему кодирования, однобайтная, двухбайтная, а елемент визуализации этого кода, обладает информацией как эти коды показывать,какая кодовая страница, фонт, размер... Некоторые штуки (типа умные )могут при манипуляциях менять вставляемые из буфера обмена коды, навсегда портя исходный текст. По этому есть по крайней мере два способа борьбы, первый-типа научного тыка, попробовать разобратся опытным путем, второй изучить всю эту кухню, и пользоватся правочной информацией, третий, совместить оба подхода. В виду имеющегося положения вещей, процес иногда бывает не совсем простым Что касаемо хтмл и его всякия полей ввода и проч, то оно жутко не любит руской кодировки и норовит ея перекодировать, заставить ее передать текст как есть может соответствующий атрибут в теге форм(enctype). Итого, текст(смвол), то что мы видим, можно представить в виде многослойного пирога, где каждый слой отвечает за ту или иную его характеристику, поменял в пироге прослойку, получил иной его вид.
В виду имеющегося положения вещей, процес иногда бывает не совсем простым
Да, по ходу надо как-то будет разобраться в этом... Я вот думаю, если NB сама кодировку переназначает принимая из буфера текст, то полученные фрагменты текстов можно корректно сравнивать на объем (в байтах), а вот если кодировка остается разной, то одно и тоже число символов будет занимать различное количество байт... И тогда корректно сравнивать тексты по размеру уже не удастся, нужно приводить к одной кодировке... Наверное чтобы узнать как в этом отношении обстоят дела с NB проще всего написать самим разработчикам...
Все довольно просто, есть скажем поле ввода, куда мы будем вставлять из буфера текст. В изначальном варианте(ну так, чисто условно), оно ну никак не реагирует, то что дали то и покажет как сможет. Как мы уже знаем, такие вещи имеют ряд событий, в том числе и по вставке текста, вот какой либо програмер сделал, в обработчике события, какой либо анализ введенного, подстраивая его под нормативы элемента ввода, получился елемент с какой то своей внутренней логикой, причем эта обработка может быть устроена на любом уровне, начиная с биоса и кончая твоими потугами. Сам процес является многозвенным, и прижелании возможно нафулиганить на любом его уровне. Я то потому и не очень люблю винду, из за ее излишней бутербродности, всю цепочку от начала и до конца представить ваще невозможно. Ну немного пофантазируем Есть скажем драйвер клавы уровня ядра, а технологии в винде позволяют устраивать цепочки всевозможных обработчиков, построим какую либо цепь, потом перейдем на уровень выше- апи, там тоже наплетем цепочек.., потом уровень за уровнем, так что хрен его знает что к тебе попадет Ну не бери близко к сердцу обычно принято воспринимать такие вещи в виде черного ящика, что то в него ложат и что то вынимают, не заботясь о том что же там в нем происходит. Это я к тому что акромя вполне известных вещей могет быть еще куча разныйх подарков, ну сам понимаеш, это уже отступление для маньяка
Quote (Вадим)
Наверное чтобы узнать как в этом отношении обстоят дела с NB проще всего написать самим разработчикам...
Порой быват что это может не зависить от разработчиков, какая либо паганая гейма коряво сделанная, может прилично нагадить И вообще быстрее и полезнее будет проверить такое самому эксперементально.
Согласен. Попробовал сделать следующее: 1) открыл свою прогу и накопировал в поле для вставки текста символы из файла "koi8r.txt" (файл взял в этой теме, из архива Alex3A)
2) сохранил результаты (из переменной поля для вставки) в .txt
3) открыл файл.txt в редакторе NOTEPAD++, обнаружил, что кодировка KOI8-R и сохранилась (следовательно, NB оставляет кодировку КАК ЕСТЬ).
4) в разные поля своей проги поместил текст в разных кодировках (ANSI и KOI8-R), сохранил содержимое переменных в один файл.txt, далее, открыв в блокноте NOTEPAD++ обнаружил, что сохраненные строки сохранили свою кодировку (это видно - при выборе отображения ANSI читабельны одни строки, а при выборе KOI8-R - читабельными становятся другие строки, а прежние перестают читаться...). Выходит, что разные кодировки могут присутствовать в одном файле? Или это уже не кодировки, а так сказать ссылки на наборы символов разные?
5) проверил на размер файла, сохранив один и тот же текст - в KOI8-R и в ANSI в разные файлы. Размеры файлов получаются равными по байтам - по 189 байт (только KOI8-R не читабелен), однако, после выбора кодировки KOI8-R в NOTEPAD++ (чтобы текст читался) наблюдаем увеличение количества байт практически вдвое (279 против 189 байт, в моем примере). Однако, после закрытия файла кодировка опять возвращается в ANSI и размер файла вновь маленький (т.е. выбор кодировки в NOTEPAD++ только временно применяет ее для отображения, а для преобразования там нужно использовать команду именно преобразования кодировки).
Выходит, что NB сохраняет исходную кодировку фрагментов текста (сохраненных в один файл) "как есть", но для всего файла в целом по умолчанию оставляет ANSI. Соответственно размер файлов считается по ANSI.
Если я правильно понимаю, это означает, что если текст в файле не читается, то он либо не ANSI, либо в кодировке не совместимой с ANSI. А если текст не читается, то его и пихать в прогу смысла нет, а если читается, то в представлении ANSI все равно будет занимать такой же размер как и текст в ANSI. Следовательно можно не напрягаться по поводу того, что на предмет размера сравниваемые файлы находятся в разных кодировках. Можно смело копировать от куда угодно фрагменты текста в проект NB, лишь бы он в окне самого приложения отображался, и получаемые файлы можно смело сравнивать - размер от кодировки зависеть не будет. Alex3A, я "где-то рядом" с истиной?
Причем любопытно, во всех случаях NOTEPAD++ (в отличие от NB) показывает, что размер файла больше на 8 байт, чем количество символов в файле . Считает в размер еще и название файла, а NB не считает?
Кстати, чудесным оказался этот NOTEPAD++! Бесплатный, русифицированный, встраивается по желанию в контекстное меню проводника, показывает море кодировок, в строке состояния отображает и кодировку и число символов, и байты, и вообще что только не поддерживает (синтаксисы языков программирования, макросы и т.д. и т.п.)... Жаль только файл справки на англицком... Может у кого есть на русском? В этом, с позволения сказать, блокноте... просто море возможностей! Если кто не знаком с этой прогой - очень рекомендую!
А что Peter? Peter никогда и не вникал с дебри всех этих кодировок, т.к. просто не надо было ни разу! И самое главное, Peter никак не может понять: КАКОЙ СМЫСЛ СРАВНИВАТЬ РАЗМЕРЫ ФАЙЛОВ?
"Детектор кодировки", что ли?
Абсолютно надежных гарантий правильного отображения текстов нет, т.к.:
Quote (Alex3A)
паганая гейма коряво сделанная, может прилично нагадить
ИСТИНА!
Если потребуется изменение кодировки текста, то теоретически это можно реализовать при помощи плагина (частично уже есть), но вот как быть с автоматическим распознаванием кодировки... Пока не знаю....
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
А кто знает? Даже когда вордом открываеш какой либо непонятный файл, он предлагает тебе выбрать приемлимую кодировку. В хтмл хоть тег есть, указывающий как его смотреть, хоть и не все его ставят. Получается что спасение утопающего дело рук самого утопающего Конечно, в ряде случаев как то определить иногда и можно, я уж говорил что некоторые форматы имеют дескрипторы кодировки, но это формат файлов, а не текста в буфере обмена.
Quote (Вадим)
Причем любопытно, во всех случаях NOTEPAD++ (в отличие от NB) показывает, что размер файла больше на 8 байт, чем количество символов в файле
Начитался некоторых исследований в области психолингвистики... Делаю прогу прогностики мотива (и детектор лжи, по совместительству ) в которой этот момент (параметр сравнения результатов преобразования текстов) - один из ключевых.
Quote (Peter)
как быть с автоматическим распознаванием кодировки...
Можно выдавать месагу пользователю "Если я так распознаю кодировку, текст читается?", если "Да", то оставляем, если "Нет", то "Если я так распознаю кодировку, текст читается?"