From the daily archives: "Thursday, December 29, 2011"

Батончики «Сникерс» – это классика жанра. Даже в учебниках по маркетингу есть. На Ответах.мейл осенью прошлого года был задан вопрос о весе батончика. Несмотря на то, что лучшим был признан ответ, в котором 58-граммовый батончик объяснялся счетом в унциях, этот ответ – неправильный. Почему я в этом уверен? Я в студенческие годы постоянно ел эти батончики и прекрасно помню время (год, наверное, 2002-2003), когда обычный батончик «Сникерс» весил 75 г и постепенно почти каждый год этот вес снижался. А с 2009 года вес батончика снова снизился и стал 55 г, и никакими унциями этот вес уже не объяснить.

Пара слов о том, как вещи дорожают, не дорожая, а усыхая.

Многие отечественные сайты предпочитают отдавать ответы именно в этой кодировке. Нативной поддержки в Windows Phone 7 1251 страницы нет. Приходится изворачиваться.

Без этой страницы нет никакой возможности декодировать подстановки вида &x< код_символа>;. Поэтому без нее – как без рук.

Реализация предельно простая и не требует для своего понимания никаких телодвижений. Кодовая страница 1251 – это обычная однобайтовая кодировка, каждому байту соответствует конкретный символ. Таблицу перевода можно найти, например, в Википедии – она тайны не представляет. Для перевода байт в символ мы воспользуемся обычным массивом, где коду каждого символа сопоставлено его значение, находящийся в массиве по индексу, равному коду, а для обратного перевода – хеш-таблицей, где ключи будут представлять собой символы, а значения – их коды в 1251 странице.

Также, внутри вы найдете функцию для перевода кода в символ в заданной кодовой странице. Удивительно, но такой простой вещи в .NET не существует.

Существует такое решение. Его главный недостаток – это низкая скорость перевода из символов в байты, потому что фактически по каждому символу выполняется полный проход по строке. Хотя, конечно, он гораздо проще в реализации. Ну и юникодные символы в листинге – это все-таки не совсем фен-шуй.

Читать статью полностью →

PageLines