Pull to refresh
  • by relevance
  • by date
  • by rating

Всяких значков можно затолкнуть в юникод…

Lumber room
Вам этот знак что-нибудь напоминает, если вы его видите? ;) (Если вы видите знак вопроса, то вы не видите то, что надо.)

Подумалось, что все микрографические элементы интерфейса могли бы быть текстовыми, если поискать по-хорошему, и все бы имели более-менее богатые стандартные шрифты. И тогда всё можно было бы набрать с -ы.

При наборе этого сообщения не пострадал ни один байт, и не было использовано ни одного тэга IMG.
Total votes 15: ↑14 and ↓1 +13
Views285
Comments 12

Юникодный спец-символ переворачивающий текст

Website development
Любой текст, написаный после спец-символа ‮, будет выглядеть вот так:

‮ Перевернутый текст

Если взглянуть в код документа, то MSIE и Опера покажут, что текст действительно написан правильно, а Файрфокс из-за некоторых своих особенностей покажет и код документа перевёрнутым, причём включая HTML-теги.

Плохая новость в том, что с помощью этого символа можно очень эффективно троллить, вставляя его во всякие комментарии и редактируемые поля на разных сайтах.

Хорошая новость в том, что действие этого символа обратимо и ограничено его родительским контейнером и вложенными в него, поэтому перевернуть весь контент одним символом получится только на плохо написанных сайтах.

Вот такой он разный, этот юникод :)

‮ Источник
Total votes 70: ↑67 and ↓3 +64
Views35.3K
Comments 128

Сжатие Юникод данных

Website development
В одном будущем проекте встала задача передавать и хранить данные в формате VCard, которые содержат кириллические буквы. Так как размер передаваемой информации ограничен, необходимо было уменьшить размер данных.

Было несколько вариантов:
  1. Использовать традиционные кодировки (для кириллицы — CP1251).
  2. Использовать форматы сжатия Юникода. На сегодняшний день это — SCSU и BOCU-1. Детальное описание этих двух форматов привожу ниже.
  3. Использовать универсальные алгоритмы сжатия (gzip).

Красивый, но бесполезный, график результатов:
image

Варианты решения и результаты
Total votes 50: ↑48 and ↓2 +46
Views2.9K
Comments 23

Логика разрыва ссылки на три части (при сочетании LTR и RTL)

Typography
k_s интересуется: «Я один не догнал логику разрыва ссылки на три части?»

Для ясности, вместо арабских букв в примерах будем пользоваться транслитерацией.

Текст той ссылки в HTML-коде записан так:
Например, wayawm baṣal эта ссылка yawm ʿasal выглядит разорванной

Браузер отображает арабский текст справа налево:
Например, laṣab mwayaw эта ссылка lasaʿ mway выглядит разорванной

Теперь обозначим в HTML-коде саму ссылку:
Например, wayawm baṣal эта ссылка yawm ʿasal выглядит разорванной

Браузер отображает арабский текст в прежних местах, причём части ссылки так и остаются частями ссылки:
Например, laṣab mwayaw эта ссылка lasaʿ mway выглядит разорванной

Упражнение: ткните мышью перед ссылкой, и, нажимая Shift+вправо, расширяйте выделение по одному символу. Так проще разобраться в соответствии между логическим и визуальным порядком символов.
Например, ويوم بصل эта ссылка يوم عسل выглядит разорванной



Арабская пословица «yawm ʿasal wayawm baṣal» означает «День — как мёд, а день — как лук.»
Total votes 75: ↑59 and ↓16 +43
Views1.5K
Comments 21

Про кодировки и Юникод

Typography
Sandbox
Вначале стоит разъяснить пару терминов. Кодовая страница — таблица заранее известного размера, каждой позиции (или коду) которой сопоставлен единственный символ или его отсутствие. Например, кодовая страница размерностью 256, где 71-й позиции соответствует буква «G». Кодировка — правило кодирования символа в числовое представление. Любая кодировка создается для определенной кодовой страницы. Для примера, символ «G» в кодировке Абрвал примет значение 71. Кстати, простейшие кодировки так и поступают — представляют символы их значениями в кодовых таблицах, ASCII тоже к таким относится.
Читать дальше →
Total votes 23: ↑12 and ↓11 +1
Views32.7K
Comments 16

Внутренности вордовских файлов: просто ужас

Website development
Sandbox
О сложности и жуткости вордовских файлов давно ходили легенды. Известно было, что формат этот крайне запутанный, а к тому же еще и полностью засекреченный, так что о половине тамошних полей можно было только догадываться.

Не скрою, что и меня эти файлы интересовали, но дальше первой страницы описания я так продвинуться и не смог. Однако незакрытый гештальт остался.

А теперь вот жизнь заставила (или подкинула возможность) все-таки разобраться во внутренностях всем хорошо известных документов, тем более, что в Штирлица теперь играть не обязательно, достаточно скачать с сайта «Майкрософта» официальные спецификации.

Что тут можно сказать? Невольно вспоминается старый пошлый анекдот: ну ужас. Ну просто ужас, но ведь не ужас-ужас-ужас.
Читать дальше →
Total votes 237: ↑194 and ↓43 +151
Views49.7K
Comments 211

Почта Mail.Ru (даже если ты китаец)

Mail.ru Group corporate blog
Хотим поделиться радостью: мы успешно перевели нашу почту на UTF-8. Теперь можно спокойно переписываться с арабами, китайцами, японцами, греками, грузинами, писать письма на иврите и идише, блеснуть знанием финикийской письменности или зашифровать послание нотами. И при этом быть уверенным, что адресат получит именно то, что ему отправили, а не квадратики или «кракозябры».

Как и многие серьезные изменения, процесс перехода потребовал серьезной подготовки и имел большую «подводную» часть – перед разработчиками стояла задача обработать 6 петабайт писем в более чем сотне миллионов ящиков. Первые эксперименты начались осенью 2010 года, и весной 2011 все ящики были успешно переведены на новую систему. Одновременно с этим символично сменился домен проекта «почта»: вместо основного домена win.mail.ru и исторических koi.mail.ru и mac.mail.ru, которые выдавали сайт в соответствующих кодировках, теперь используется e.mail.ru, выдающий все страницы в UTF-8. Вся почта также хранится, обрабатывается и выводится в UTF-8. Это означает, что в письмах можно использовать любые живые и мертвые языки, математические и нотные символы, причем как в виде plain-text, так и с форматированием.

Чтобы напомнить, как обстояли дела с международным общением еще недавно, мы подготовили небольшой экскурс в историю кодировок.

Вначале была цифра


Удивительно, но проблема кодировки сообщений, которая в восьмидесятых мучила первых сетевых пользователей, а в девяностых была бичом зарождающегося Рунета, возникла задолго до появления компьютера. Одним из самых первых ростков информационного века был телеграф, и сейчас нужно некоторое усилие, чтобы вспомнить, что способ связи, возникший еще до телефона, был изначально цифровым.

Не считая в чистом виде двоичной азбуки Морзе, первым кодом, превратившимся в стандарт, стал код Бодо. Этот 5-битный синхронный код позволял телеграфам передавать примерно 190 знаков в минуту (а в последствие до 760) или 16 бит в секунду. Кстати, те, кто покупал первые модемы, помнят, что скорость значилась именно в бодах – единицах измерения имени Эмиля Бодо, изобретателя кода и высокоскоростного телеграфного аппарата.
Читать дальше →
Total votes 109: ↑79 and ↓30 +49
Views18.6K
Comments 125

Можно ли верить своим глазам? (Unicode в именах файлов)

Information Security
Translation
Несколько дней назад один из наших пользователей прислал образец (SHA1: fbe71968d4c5399c2906b56d9feadf19a35beb97, определяется как TrojanDropper:Win32/Vundo.L). Это троян для фишинга с сайтов vk.com и vkontakte.ru, запросы на которые перенаправляются на 92.38.209.252 необычным способом.

Обычный метод перенаправления трафика — добавить запись в файл hosts, который находится в папке %SystemRoot%\system32\drivers\etc. Однако, когда мы открываем этот файл на заражённом компьютере, то там нет никаких записей для vk.com и vkontakte.ru:


Читать дальше →
Total votes 307: ↑273 and ↓34 +239
Views28.6K
Comments 245

Вышел стандарт Unicode 6.1, добавлено 732 новых символа

Typography
31 января официально представлена новая версия стандарта Unicode 6.1.0, это минорный релиз по сравнению с Unicode 6.0.0 (октябрь 2010 г.).

Последняя версия включает 732 новых символа, в том числе семь новых письменностей: китайские, азиатские и африканские. Среди 110 тыс. символов Unicode можно найти глифы на любой вкус, например, вот символ LOVE HOTEL (U+1F3E9):


Читать дальше →
Total votes 48: ↑44 and ↓4 +40
Views5.5K
Comments 71

UTF-8: Кодирование и декодирование

Programming
Sandbox
Причиной разобраться в том, как же работает UTF-8 и что такое Юникод заставил тот факт, что VBScript не имеет встроенных функций работы с UTF-8. А так как ничего рабочего не нашел, то пришлось писть/дописывать самому. Опыт на мой взгляд полезный в любом случае. Для лучшего понимания начну с теории.

О Юникоде


До появления Юникода широко использовались 8-битные кодировки, главные минусы которых очевидны:
Читать дальше →
Total votes 47: ↑37 and ↓10 +27
Views158.3K
Comments 24

Комфортная работа с Юникодом

TypographyInterfacesUsability
Цель заметки — показать один онлайновый сервис просмотра символов Юникода, поскольку в нём их удобно искать, и сравнить его с множеством похожих. Периодически бывает нужно найти среди множества текстовых символов, поддерживаемых некоторым шрифтом, те, которые наиболее точно передают мысль или отражают суть высказывания. Этим давно пользуются посетители различных соцсетей, где выразительные способности символов давно оценены и существуют руководства с перечислением сотни-другой интересных символов. Каких? Самых оригинальных, и, казалось бы, не нужных серьёзным разработчикам, для которых адресована данная статья: звёзды разных очертаний, стрелки, снеговики, часы, эмоции.

Разработчикам фронтенда бывают нужны символы для быстрого прототипирования страниц. Вместо того, чтобы потратить время на поиск или отрисовку символа, его возможно найти в шрифте, например, Arial или Helvetica и создать временный элемент интерфейса. Иногда нужно посмотреть и использовать символы редкого языка, иероглифы. Многообразие символов уже имеется в некоторых шрифтах некоторых ОС, остаётся «лишь» выбрать. В программах и самой ОС есть средства просмотра и выбора символов любого шрифта системы (пример). Но не всегда эти средства удобны и не всегда предоставляют нужную информацию. Становится нужен хотя бы один онлайновый сервис, чтобы взять, и быстро (попытаться) найти подходящее. Раньше помогал поиск таблиц юникода в интернете, но удручал их вид, редкость и слабая оформленность. И тут недавно появляется сервис, в котором создатели решили исправить ряд досадных интерфейсных недостатков поиска.
Что же это за чудо такое?
Total votes 24: ↑24 and ↓0 +24
Views8.7K
Comments 6

Настраиваем Eclipse PyDev под отладку Python 3.x с честным юникодом и кириллицей

PythonProgrammingEclipse
Однажды, холодным зимним вечером, я внезапно вспомнил, что не поделился простым секретом, как добиться простого питоновского счастья за пределами ASCII резервации в такой замечательно-бесплатной IDE как Eclipse с плагином PyDev. Причём счастья с отладкой и честным юникодом, что означает следующее: если вы назвали свою переменную кириллицей, вы сможете посмотреть у неё значение, поставив breakpoint, написать пару строк текста по-русски и у вас ничего не отвалится.
Да-да, уважаемый читатель, Eclipse PyDev не очень-то дружит с символами за пределами 0x7F и отладка очень любит отваливаться всякий раз при попытке прочитать значение кириллической переменной. Да какое там, простое наведение мышкой на юникодовый символ приводит к фатальным последствиям при отладке кода написанного на Python 3.x (UTF-8). Если же настройки вашей файловой системы отличаются от UTF-8, поздравляю, вы не сможете даже запустить ваш скрипт. Я имею в виду именно то, что например под Windows ваш замечательный скрипт с единственным словом по-русски просто выведет из строя PyDev.
Возможно я перестарался, сгущая краски, не пугайтесь, починить это в состоянии мы сами, просто прочитав эту небольшую инструкцию. В награду мы получим бесплатное средство разработки, довольно удобное, фантастически гибкое в настройках и усовершенствовании, вплоть до разработки на нескольких языках, со встроенным инструментом версионирования.
Под катом инструкция и неприличных размеров картинки.
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views81.2K
Comments 17

Взлом аккаунта и юникодные символы

Information SecurityPython
В техническом блоге «Спотифая» было опубликовано интересное исследование на тему взлома аккаунтов сервиса путём использования особенностей канонизации вводимых пользователем данных. Это стало возможным благодаря тому, чем спотифаевцы гордятся, — полностью юникодному логину. К примеру, пользователь легко может иметь снеговика в качестве имени аккаунта, если он того пожелает. Реализация подобного, впрочем, с самого начала доставляла некоторые неудобства.

Несколько лет назад в Великую пятницу на форуме техподдержки было опубликовано сообщение о возможности взлома любого аккаунта на сервисе. Представитель компании попросил продемонстрировать это на примере его собственного аккаунта, и через несколько минут ему был задан новый пароль и создан новый плейлист. Это немедленно привлекло внимание нескольких сотрудников, вынужденных провести Пасху в попытках закрыть «дыру». В связи с особенностями уязвимости регистрация новых аккаунтов была временно закрыта.

Хакер действовал следующим образом: желая взломать аккаунт с именем, скажем, bigbird, он регистрировал аккаунт с именем ᴮᴵᴳᴮᴵᴿᴰ (в Пайтоне эта строчка выглядит как u’\u1d2e\u1d35\u1d33\u1d2e\u1d35\u1d3f\u1d30′). После запроса ссылки на сброс пароля задавался новый пароль, который подходил к аккаунту bigbird.
Читать дальше →
Total votes 90: ↑85 and ↓5 +80
Views32.8K
Comments 31

Юникод и .NET

.NETC#
Translation
От переводчика. На Хабре уже неоднократно публиковались статьи как по Юникоду, так и по строкам в .NET. Однако статьи о Юникоде применительно к .NET ещё не было, поэтому я решил перевести статью общепризнанного гуру .NET Джона Скита. Она закрывает обещанный мною цикл из трёх статей-переводов Дж. Скита, посвящённых строкам в .NET. Как всегда, буду рад замечаниям и исправлениям.
Логотип Юникода

Введение


Тема данной статьи довольно обширна, и не ждите от неё детального и глубокого разбора всех нюансов. Если вы полагаете, что достаточно хорошо разбираетесь в Юникоде, кодировках и т.д., эта статья может быть для вас почти или даже полностью бесполезной. Тем не менее, довольно много людей не понимают, чем различаются двоичные и текстовые данные (binary и text), или что такое кодировка символов. Именно для таких людей и написана данная статья. Несмотря на, в общем-то, поверхностное описание, в ней затрагиваются некоторые сложные моменты, однако это сделано скорее для того, чтобы читатель имел представление об их существовании, нежели чтобы дать детальные разъяснения и руководства к действию.
Читать дальше →
Total votes 41: ↑38 and ↓3 +35
Views39.7K
Comments 6

Зачёркивание и подчёркивание символьными средствами ( ̶т̶а̶к̶ ̶, т̱а̱к̱ или т̲а̲к̲)

JavaScript

I. В чём проблема



Если социальная сеть, платформа для блогов или форум предоставляют возможность размечать текст при помощи HTML или BBCode, перечёркивать или подчёркивать текст не составляет труда: можно пользоваться тегами s и u обеих разметок или назначать стили в HTML. Но что делать, если у нас есть только голый текст? Или, например, нам нужно зачеркнуть/подчеркнуть слово в заголовке страницы, отображаемом в заголовке вкладки или всего браузера, или оформить слово в заголовке форумного поста — короче говоря, всюду, где не работает разметка?

Можно рискнуть и воспользоваться средствами Юникода.

Читать дальше →
Total votes 54: ↑42 and ↓12 +30
Views99.2K
Comments 55

Обходим ошибки утилит из пакета GNU Core Utilities

Configuring LinuxSystem administration*nix
Sandbox
TerminalПакет coreutils предустановлен во многих дистрибутивах Linux. Он содержит в себе стандартные и такие привычные утилиты, как cat, chmod, date, echo, ls и многие другие. Но даже в таком каноническом пакете встречаются ошибки, которые могут помешать работе пользователя. С одной из них я столкнулся на собственном опыте и хочу рассказать о том, как смог её обойти.
Читать дальше →
Total votes 34: ↑14 and ↓20 -6
Views6.3K
Comments 40

Когда строка не является строкой?

Abnormal programmingProgramming.NET
Translation
В рамках моей «работы» над стандартизацией C# 5 в технической группе ECMA-334 TC49-TG2 мне посчастливилось увидеть несколько интересных способов, которыми Владимир Решетников проверял C# на прочность. В данной статье описана одна из проблем, которые он поднял. Разумеется, она, скорее всего, никак не затронет 99.999% C#-разработчиков… но разобраться все равно любопытно.

Спецификации, используемые в статье:


Что такое строка?


Как бы вы объявили тип string (или System.String)? Я могу предположить несколько вариантов ответа на данный вопрос, от расплывчатых до довольно конкретных:

  • «Какой-нибудь текст в кавычках»
  • Последовательность символов
  • Последовательность символов Юникода
  • Последовательность 16-битных символов
  • Последовательность слов UTF-16

Только последнее утверждение полностью верно. Спецификация C# 5 (раздел 1.3) гласит:

Обработка строк и символов в C# использует UTF-16. Тип char представляет слово UTF-16, а тип string – последовательность слов UTF-16.

Пока всё в порядке. Но это C#. А как насчет IL? Что используется там, и имеет ли это значение? Оказывается, что имеет… Строки должны быть объявлены в IL как константы, и природа этого способа представления важна – не только кодировка, но и интерпретация этих закодированных данных. В частности, последовательность слов UTF-16 не всегда может быть представлена в виде последовательности слов UTF-8.
Читать дальше →
Total votes 31: ↑29 and ↓2 +27
Views19.6K
Comments 18

Не каждый человек может написать своё имя в Юникоде

IT Standards
Казалось бы, в Юникод включили уже все возможные и невозможные символы. В последней версии Unicode 7.0 добавлено 23 новых письменности, включая древнепермское письмо и почти полностью расшифрованное линейное письмо А минойской цивилизации 2000 г до н.э., сотни экзотических эмотиконов.

Общее количество символов в Unicode превысило 110 000 штук. Казалось бы, там уже есть все распространённые символы. Оказывается, это не так. До сих пор остались люди, которые не могут написать в Юникоде даже собственное имя. Им приходится прибегать к разным трюкам.

О своей проблеме рассказал индийский IT-специалист, имя которого мы не можем правильно напечатать, разве что в транслитерации: Адитья Мукереджи.
В чём же дело
Total votes 74: ↑63 and ↓11 +52
Views46.4K
Comments 116

Unicode character properties в регулярных выражениях V8

JavaScriptRegular expressionsNode.JS
Регулярные выражения в JavaScript понемногу догоняют PCRE.

Недавно упомянутая возможность lookbehind перешла на стадию флага --es_staging.

Разработчики V8 также начали добавлять в регулярные выражения свойства Юникода (см. общее описание и спецификацию этой характеристики символов).

В продвижении lookbehind и character properties, на мой взгляд, есть две разницы: первая возможность вводит совсем немного нового синтаксиса по сравнению со второй, зато вторая меньше изменяет поведение всего процесса (сравните количество затрагиваемых изменениями файлов в исходниках V8 по двум упомянутым ссылкам). По сути, свойства Юникода — всего лишь удобные сокращения, синонимы для разных групп codepoint-ов, поэтому от них можно ожидать минимум подвохов при интеграции в систему.

Конечно, обе возможности не советуют применять в продукции (кроме Google Chrome, они нигде в браузерах не реализованы, а Node.js только-только переходит на соответствующую им версию V8, в которой они всё равно пока под флагами).

Но для личных нужд (утилиты по обработке текста и т.д.), мне кажется, они вполне применимы. Возможно, коду разработчиков V8, даже экспериментальному, можно порой доверять с ничуть не большим риском, чем разнообразным библиотекам на npmjs или GitHub.
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Views5.6K
Comments 6
1