| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > кодировка UNICODE |
| Автор: iglaweb 25.9.2009, 00:54 | ||||
Как разделить код символа Unicode'а на два значения, подобно тому как делает char
В y заполнен только первый байт и все(1072, что соответствует символу 208 из кодировки ISO 8859-5). Как этот код числа разделить?
В ch же содержится два кода(208 и 176). Как сделать подобное с Unicode? |
| Автор: 586 25.9.2009, 01:10 | ||
это? |
| Автор: Lazin 25.9.2009, 08:26 |
| unicode, это не кодировка!!! |
| Автор: iglaweb 25.9.2009, 08:36 |
нет, вообще код символа почему-то 97 и все. Добавлено через 51 секунду что тогда? |
| Автор: Lazin 25.9.2009, 09:39 |
это стандарт кодирования символов unicode текст может быть представлен в разных форматах, UTF-8, UTF-16 и тд |
| Автор: Anikmar 25.9.2009, 09:46 |
А что тогда кодировка? |
| Автор: Lazin 25.9.2009, 09:50 |
| http://local.joelonsoftware.com/wiki/Абсолютный_Минимум,_который_Каждый_Разработчик_Программного_Обеспечения_Обязательно_Должен_Знать_о_Unicode_и_Наборах_Символов |
| Автор: Anikmar 25.9.2009, 10:35 |
| ИМХО. Вы уж перегнули кажется с дотошностью. Во-первых статья переводная и лезть в дебри происхождения и значения слова "кодировка" пустое занятие. Во-вторых - следуя вашей логике Уникод надо считать набором кодировок? Тогда как быть с куском уникода UCS? это именно кодировка. ИМХО. Не придирайтесь к словам. Говорить фразу "В кодировке UTF-8 набора символов уникод" доллго и громоздко, чем просто "В кодировке Уникод. UTF-8". Если вы имеете в виду, что уникод несколько больше чем просто кодировка - вы правы, но вы же говорите "указатель содержит адрес в памяти" не в даваясь в подробности организации виртуального адресного пространства И вообще, значение слова кодировка символа в моем понимании - это то, когда по числовому коду можно идентифицировать символ алфавита либо служебный символ. Если не так - тогда надо срочно придумать другое слово |
| Автор: Lazin 25.9.2009, 12:31 | ||||||||
character encoding, кстати, оригинал найти совсем не сложно
Это не моя логика, это реальность, ты можешь либо работать с двоичным представлением строки, либо работать с последовательностью кодовых точек, но только тогда, когда ты знаешь, с помощью какой кодировки была закодирована(encoded) строка текста. Можно закодировать unicode данные используя какую-нибудь кодировку; можно декодировать данные из строки байт, используя ту-же кодировку, а можно использовать неправильную кодировку и получить неправильные данные на выходе. Когда твоя программа использует wstring и wchar_t для представления текста, это не проблема, но когда программе нужно общаться с внешним миром, то строки в "кодировке юникод" неожиданно начинают выглядеть как набор крокозяблов
приблизительные формулировки, приводят к приблизительным знаниям |
| Автор: bsa 25.9.2009, 13:46 | ||
| iglaweb, char ничего никуда не разделяет. sizeof(wchar_t) равен 2 (Windows) или 4. sizeof(char) равен 1 L"АВБГД" - говорит компилятору, что нужно преобразовать строковый литерал в набор wchar_t Если ты хочешь получить доступ к битовым полям, то используй для этого соответствующие методы:
|
| Автор: Anikmar 25.9.2009, 15:02 |
| Конечно программирование любит лаконичность. Но кто-то из фантастов (кажется Лем) описывал историю, когда создатель робота захотел избавится от кучи старых глобусов у себя в квартире. И приказал роботу - выкинь все шарообразные предметы. Робот выкинул все глобусы вместе с головой создателя. ИМХО. Не ради спора (собственно я даже не спорил, а мне интересно было как называть "юникод" - ведь даже в название есть корень "код"), а ради избавления от излишней занудливости Если разобрать русское слово "кодировать" то юникод содержит код символа и некий код правила декодирования. Проблема в том, что одиночный символ невозможно декодировать если сказать только то, что он в кодировке юникод - тут вы совершенно правы, надо обязательно уточнить в какой именно "модификации" юникода. Но от этого юникод не перестает быть таблицей кодов символов и слово кодировка вполне к таким вещам применима. В общем ладно - не будем офтоп разводить - не та тема. |
| Автор: iglaweb 25.9.2009, 15:04 | ||||
Короче:
Потом же я делаю так:
Но так я получил только %D0, это прописная буква 'а'. Но для передачи в ссылке или в запросе кроме %D0, нужен %B0. Вот пример: http://yandex.ru/yandsearch?text=%D0 - В поиск забивается буква 'а'? Нет! А если так: http://yandex.ru/yandsearch?text=%D0%B0 - Уже она) Мне надо было по коду символа юникода, получить в 16-ом виде код соответствующего ASCII символа (http://ru.wikipedia.org/wiki/ISO_8859-5) |
| Автор: iglaweb 25.9.2009, 15:52 |
| Вот хорошая ссылка: http://ru.wikipedia.org/wiki/URL#.D0.9A.D0.BE.D0.B4.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_URL |
| Автор: bsa 25.9.2009, 16:09 | ||
iglaweb, я тебе скажу, что ты извращенец, причем в жесткой форме.
|
| Автор: iglaweb 25.9.2009, 16:18 |
| bsa, в escaped попало %4%30! И что мне с этим делать?? 16-ый код символа юникода, а мне нужен не юникода, а ASCII ! |
| Автор: bsa 25.9.2009, 17:42 |
| может тебе посмотреть что-то вроде iconv? |
| Автор: iglaweb 25.9.2009, 18:17 |
| Хочется без дополнительных библиотек. |
| Автор: xvr 29.9.2009, 22:10 | ||
А это не UTF-8 случайно? Тогда просто wchar_t на части разобрать недостаточно. |
| Автор: iglaweb 29.9.2009, 22:14 |
| да, UTF-8, вот пример решения проблемы: http://en.wikipedia.org/wiki/UTF-8#Description =) |