|
|
|
| Чисто из-за любопытства, лобая кодировка имеет символы которые представленые 16 ричным числом.
Зачем каждому символу выделено 16ричное число.
Куда проще понимать. что каждому символу соотвесттвует какое-то 10ричное число от 0 до 255. | |
|
|
|
|
|
|
|
для: demonow
(25.01.2012 в 16:43)
| | Когда у вас восьмиричная кодировка от 0 до 255 вы не можете одновременно в одном тексте отобразить русский и китайский языки - вам придется сначала переключиться на русскую кодировку, чтобы посмотреть русский текст, а потом в китайскую, чтобы прочесть китайский текст. Шестнадцатеричным числом или более продвинутым вариантом вроде UTF-8 эта проблема снимается. | |
|
|
|
|
|
|
|
для: cheops
(25.01.2012 в 17:42)
| | А когда мы задаем кодировку редактируемой программой Notpad++ получается мы выполняем действие над символами противоположное считованию его каким-то бразером или редактором??(я наверно уже вас мягко говоря достал этой темой, но блин она меня не успокоет пока не розберусь) | |
|
|
|
|
|
|
|
для: demonow
(25.01.2012 в 20:36)
| | Переключая кодировку мы ничего с документом не делаем, мы просто интерпретируем его данные. Ведь текст который вы видите в этой теме для компьютера таковым не является, для него это набор цифр. Отображает он их в буквы в соответствии с кодировкой, т.е. видит программа число 224, "смотрит" в кодировку и подставляет "а", видит 225 - подставляет "б" и т.д. А в многобайтных кодировках число берется не из одного байта, а из нескольких. Т.е. когда вы переключаете кодировку, вы не меняете текст (набор цифр), вы меняете правила, вместо цифр подставляются другие символы.
Если что-то не понятно, задавайте вопросы - они только приветствуются (будет 100 вопросов - смело заводите 100 тем :). На самом деле тема очень серьезная и всплывает тут регулярно. По ней бы впору книги писать и кстати, перевод такой книги собиралось выпустить издательство Символ-Плюс, но что-то у них там заглохло с ней. | |
|
|
|
|
|
|
|
для: cheops
(25.01.2012 в 20:55)
| | Получается каждой клавыше на клавиатуре соотвествует определенный набор 2цыфр , и после их ввода они отображаются в соответсвии какой-то кодировке...
И если это так, то как работает текстовый редактор,когда печатаем текст, получает на вход двоичную комбинацию и тут же ее выводит? | |
|
|
|
|
|
|
|
для: demonow
(25.01.2012 в 23:59)
| | Почти так, только у клавиш свои коды, они идут операционной системе, она в зависимости от выбранной раскладки преобразует их в числа, соответствующие символам этой раскладки. Числа потом интерпретируются в соответствии с кодировкой. Причем эта схема довольно упрощена, там довольна длительная цепочка еще внутри операционной системы, к железу программу никто не допускает - данные проходят через драйвера и серию механизмов. Однако, так как у нас очень быстрые компьютеры, нам кажется, что буквы набираются сразу без задержек. | |
|
|
|
|
|
|
|
для: cheops
(26.01.2012 в 00:14)
| | А когда выбираем расскладку, применяются те же таблици что и при отображении в бразерах UTF-8 там всякие? | |
|
|
|
|
|
|
|
для: demonow
(26.01.2012 в 00:21)
| | Не совсем... дело в том, что коды клавиш имеют другие номера, более того, операционная система сопоставляет клавишам свои собственные комбинации кодов, в зависимости от того нажат ли Caps Lock, Shift, Alt, Ctrl - все это приводит к своим собственным кодам, которые она транслирует в программу, программа уже получает коды действительно в кодировке, например, в Win 9x это была всегда однобайтовая кодировка (предполагается, что программа сама знает какая), начиная с Windows 2000 - это Unicode или UTF-16 (два байта на символ), впрочем вы до сих пор можете формировать проекты для работы с однобайтной кодировкой (подробности на нашем C++ форуме). Получив на руки данные (считается, что вы знаете в какой они будут кодировке), вы в программе вольны поступать с ними по своему, хотите так сохраняйте/отображайте, хотите преобразуйте в альтернативную кодировку перед сохранением/отображением. Т.е. кодировки появляются (да именно те самые, что и в браузерах), но появляются они в момент передачи данных от операционной системы к программе (когда вы интерпретируете поступающие данные). Например, выбран русский язык, программа графическая, значит кодировка - Windows-1251, выбран русский языка, а программа консольная, значит кодировка Windows-866 (ну если конечно, перед этим вы не выполнили команду chcp 1251) и речь идет о проектах без поддержки Юникогда. Если Юникод поддерживается, то вам будут поступать данные в кодировке UTF-16 (Понятно, что это возможно только начиная с Windows 2000). Т.е. кодировка - это всегда интерпретация данных, будь то пользователем или разработчиком. | |
|
|
|
|
|
|
|
для: cheops
(26.01.2012 в 01:12)
| | Ну с этим немного розобрался, а вот есть еще вопрос.
Я создал файл text.txt и сохранил его в кодировке windows-1251, открываю его браузером, и просмотреть его можно только в кодировке windows-1251, тоесть как-будто мы просто открыли text.txt толкьо в окне браузера, как будто браузер это посредник которому просто говорят что нужно этот файл посмотреть такой-то кодировкой. | |
|
|
|
|
|
|
|
для: demonow
(26.01.2012 в 12:42)
| | Браузер сначала смотрит HTTP-заголовок Content-Type, если его не находит, ищет такой META-тэг в документе, если и его не находит то пытается угадать или выводит ту кодировку, которая выбрана. | |
|
|
|
|
|
|
|
для: cheops
(26.01.2012 в 13:06)
| | Ну спасибо розобрался немножко, теперь имею представление о том как это работает.
В принципе можно было и не углублятся в тему, но не знания вызывают какой-то дискофорт, неуверенность.
Да и вообще у меня есть дурная привычка ковырятся пока не розберусь. | |
|
|
|
|
|
|
|
для: demonow
(26.01.2012 в 13:10)
| | Нормальная привычка... и знак хороший, если программирование интересно - в нем все заточено именно под такое мышление. | |
|
|
|