Skip to content

en-ru-dict/new-translit-rus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Новый транслит «1E» — это Markdown для кириллицы

Пора забыть про «sh ch zh/j ya yo» и «ё ж ч ш щ ь ъ э ю я». Один стандарт — навсегда.


1. Проблема, которую вы видите каждый день на сайтах и в email

«РџСЂРёРІРµС‚ медвед, как дела? РїРѕРєР° РЅРµ родила» «╨Я╤А╨╕╨▓╨╡╤В ╨╝╨╡╨┤╨▓╨╡╨┤, ╨║╨░╨║ ╨┤╨╡╨╗╨░? ╨┐╨╛╨║╨░ ╨╜╨╡ ╤А╨╛╨┤╨╕╨╗╨░»
«╧ЁштхЄ ьхфтхф, ъръ фхыр? яюър эх Ёюфшыр»
«Privet medved, kak dela? poka ne rodila»

100 разных людей — 100 разных транслитов.
Чаты, ники, URL, код, поиск — везде бардак.
Обычный транслит — это лотерея:

  • yo → ё? йо?
  • ch → ч? сх?
    никто точно не знает как писать ж,щ,ь,ъ,э,ю?

А теперь добавьте кодировки — настоящую минную полосу. В 2025 году, когда Unicode доминирует, старые системы всё ещё мучают нас. Windows-1251 (WinCyrillic), KOI8-R (древний интернет-стандарт), CP866 (DOS), ISO-8859-5 — эти "клоны" кириллицы несовместимы. Слово "его" в KOI8-R может стать "ҐЈ®" в Windows, или хуже — превраться в нехорошее слово. Проблем сотни: от мусора в email до кразябр в базах данных.


2. Кодировки: бомба замедленного действия в старых системах

Старые ОС и софт — это хаос:

  • DOS/CP866: Консоли Windows до сих пор используют OEM-кодовые страницы. "Привет" в DOS может отобразиться как "╨░╨╕╨╗╨╡╨┤". Передача файлов между DOS и Unix? Полный крах — символы "съедаются" или мутируют.
  • Windows-1251 vs KOI8-R vs ISO-8859-5: Три "стандарта" для кириллицы, но они непереводимы. В KOI8-R (старый интернет) "А" — это 0xC1, в Windows-1251 — 0xC0. Результат: текст на сайте выглядит как "китайская грамота". На Unix нет шрифтов для KOI8, на Windows — для ISO-8859-5.
  • Почтовые серверы и email: Exchange или старые SMTP-сервера переключают кодировки (UTF-8 в ISO-8859-1), и "Привет" становится "������". Заголовки с не-ASCII? Полный провал — серверы игнорируют или кодируют в "Base64", но если ошибка, то сообщение — сплошной мусор.
  • Хостинги и БД: Старые MySQL или Oracle на shared-хостингах хранят данные в CP1251, но фронтенд ожидает UTF-8. Результат: "я" → "ÿ". Легаси-БД (типа dBase) вообще не знают Unicode — импорт/экспорт = потеря данных.
  • Шрифты: Нет шрифта для кодировки? Символы — квадраты или "?". В старых системах (Win95/NT) шрифты VGA — только для CP437, кириллица "тает". Даже в 2025 году 1.3% сайтов используют ISO-8859-1 (читается как Windows-1252), и на не-Windows это — каша.

Реальная трагедия: В 2010-х парень написал девушке email с заголовком "Я люблю тебя" (на русском). Из-за mismatch кодировок (отправитель — KOI8-R, получатель — Windows-1251) заголовок превратился в "иди на фиг" — (символы сдвинулись в оскорбительные комбинации). Они поссорились, и история превратилась в легенду и анекдоты как "email-кошмарик из-за кодировок". Unicode спасает, но не везде: старые серверы (Exchange 2016), legacy-ПК и даже 0.3% сайтов в 2025 — всё ещё на 8-битных кодировках.

Сотни проблем — одна причина: неоднозначность.


3. Решение: Транслит 1E — один код

В краткой версии Ё=Е,Ъ=ъ,Ь=ь,Щ=щ Это не критично и читаемо, но 1 код - 1 символ и декодирование неоднозначное, Заглавные нужны реже, а после точки и пробела всегда Заглавная автоматически, а для сокращений пишите без пробела (рус.яз)

Буква/Human/Simple

ё/1e/e // похожа на Е и 1 для отличия от Е, ё=е кратко Ё/1E/E // исключение 1+буква, использовать нежелательно

ж/x/x // похожа если добавить палку в середину x|x Ж/X/X // по старому zh/j

ю/q/q // кЮ , по старому u=у Ю/Q/Q // похожа если повернуть боком |-О

ш/w/w // похожа, а В это V Ш/W/W // по старому sh

щ/1w/7 // из 7 спичек можно сложить (Щтирлиц агент 007, 17 мгн весны) Щ/1W/7 // по старому shch, исключение 1+буква, W+| похоже (или Щ=Ш)

ь/6/6 // похожа если сверху убрать, по старому кавычка ' Ь/16/6 // 1 - заглавная у цифровых

ъ/5/5 // похоже, но хвост в др.сторону Ъ/15/5 // 1 - заглавная у цифровых

ч/4/4 // похожа и так уже пишут Ч/14/8 // 1 - заглавная у цифровых, 8=4+4

э/3/3 // похожа и отличается от Е! Э/13/0 // 1 - заглавная у цифровых, 0 чуть похожа, если слева убрать

я/9/9 // похожа если добавить справа палку 9| Я/19/2 // 1 - заглавная у цифровых, 2 чуть похожа, если палку снизу вправо 2|

~ символ для переключения транслита-1Е на цифры и латиницу ~~ сам символ ~ внутри строк (используется редко и можно ввести с клавиатуры)

Главное — 1 = «включаем магию»

  • 1E → Ё
  • 1W → Щ
  • 14 → Ч 1+ у цифровых это заглавные, так как у цифр нет верхнего регистра 1+ остальные символы и цифры зарезервированы на будущее: частые слова, выражения, смайлы 1h=Привет(hello) 1b=Пока(bye) Простое правило:

Обычные буквы — как в школе. Цифры — для «трудных». 1+символ — для заглавных и Ёё,Щщ

Однозначная замена решает всё сразу:

  • Храните в ASCII/латинице — никаких кодировок! "xizn6" (жизнь) работает везде: DOS, старые БД, email без UTF-8.
  • Декодируйте на лету: проверьте шрифты/систему — если Unicode/шрифты есть, выводите кириллицу. Нет? Оставьте транслит — читаемо!
  • Больше никаких "?????" в legacy-системах.

4. Почему это лучше всего, что было до

Обычный транслит + кодировки Транслит 1E
sch, shh + KOI8 → мусор в email 7 (однозначно)
yo + Win1251 → "ÿo" в БД 1e (ASCII-safe)
ya + ISO-8859 → квадраты в шрифтах 9 / 19
zh + DOS → нечитаемо x
Ё = Е везде, + кодировка-ошибки 1EE

Однозначность. Читаемость. Краткость. + Защита от кодировок.


5. Как это работает в жизни

~privet mir! 1Exik v tumane~ cat dog

привет мир! Ёжик в тумане cat dog

~ — как **жирный** в Markdown.
Включаешь режим — и всё внутри — транслит.
Выключаешь — обратно латинские буквы и цифры.

В старой БД: хранится "1Exik" — никаких проблем с CP866. Декодер на фронте: "Ёжик" (если UTF-8), или оставь как есть.


6. Один стандарт + кратко

Режим Для кого
Robot Боты, API, URL (legacy-safe)
Human Люди, чаты, ники
Кратко Для случаев где однозначное декодирование не важно

Все понимают друг друга.
Пишешь — читаешь и всё понятно (цифры похожи на буквы) Кодируешь — декодируешь в браузере. Без кодировок — везде.


7. Это Markdown кириллицы

Markdown Транслит 1E
# Заголовок ~zagolovok~
**жирный** 1E → Ё

Markdown победил, потому что:

  • Просто писать
  • Просто читать
  • Просто парсить

Транслит 1E — то же самое. + Спасает от кодировок, как Unicode мечтал.


8. Почему все перейдут на новый транслит

  1. Одна таблица → нет ошибок
  2. Короткие кодыxizn6 вместо "zhizn'"
  3. Поддержка Ё → если очень надо !
  4. Работает в URL, НИКах, поиске — и в старых системах!
  5. Декодер — 20 строк JS
  6. Храни в 1E, выводи по-умному — шрифты есть? Кириллица. Нет? Транслит.
  7. Unicode не везде? Не беда — ASCII вечно.

9. Присоединяйся к стандарту

  1. Скопируй HTML-демо
  2. Вставь в свой чат/бот/сайт
  3. Напиши: ~privet 1Exik, kak xizn6?~

Через год все будут так писать вместо Yozhik.
Начни использовать сегодня новый транслит и ты увидиш как изменится жизнь и ёжики


Транслит 1E — это не замена кириллице.
Это — кириллица в мире латиницы. Без кодировок.


Поделитесь в соцсетях и на форумах. Станьте частью нового стандарта.
GitHub → translit-1e | Демо

==== Кодер12+Декодер ====

function makeMap(str){
  const map = {};
  const pairs = str.trim().split(/\s+/);
  for(let p of pairs){const [ru,lat] = p.split(':');  if(ru && lat) map[ru] = lat; }
  return map
}

// ---------- 2. Таблицы ----------
function initT1E(){
 let oldT='А:A Б:B В:V Г:G Д:D Е:E З:Z И:I Й:J К:K Л:L М:M Н:N О:O П:P Р:R С:S Т:T У:U Ф:F Х:H Ц:C Ы:Y Ж:X Ш:W Ю:Q';//3 другие
 let newT='ё:1e Ё:1E щ:1w Щ:1W ь:6 Ь:16 ъ:5 Ъ:15 ч:4 Ч:14 э:3 Э:13 я:9 Я:19';
 let allT=oldT+' '+newT+' '+oldT.toLowerCase();
 window.mEncode1= makeMap(allT);//однозначный: старый транслит + 10 новых букв
 window.mEncode2= makeMap(allT);//краткий 1 символ это 1 буква
 m2['ё']='e';m2['Ё']='E'; m2['щ']='7';m2['Щ']='7'; //было 1+буква
 m2['Ъ']='5';m2['Ь']='6'; m2['Ч']='8';m2['Э']='0';m2['Я']='2';
 window.mDecode={};
 for(let k in m1)if(m1.hasOwnProperty(k)) mDecode[m1[k]]=k;
 mDecode['7']='щ';mDecode['8']='Ч';mDecode['2']='Я';mDecode['0']='Э';//алиасы
}
// ---------- 4. Кодирование ----------
function encode_word(text,m){return text.split('').map(ch => m[ch] ?? ch).join('');}

function decoder(text){//универсальный. оба варианта 
  let out = '',translit = false, le=text.length,c1,c2,i;
  for(i=0;i<le;i++){ 
   c1 = text.charAt(i); c2 = text.substring(i,i+2);
   if(c2 === '~~'){out+='~';i++;continue;} 
   if(c1 === '~'){translit = !translit;continue;}
   if(!translit){out += c1;continue;}
   // ---- внутри транслита ----
   if(c1 === '1'){out += mDecode[c2] || '1?'; i++; continue;}
   out += mDecode[c1] || c1;
  }
  out=out.split('. ').map(s=>s.substring(0,1).toUpperCase()+s.substring(1));
  return out.join('. ');
}
let latS='QWERTYUIOPASDFGHJKLZXCVBNM';//26
let rusS='ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ'; //33
latS=latS+latS.toLowerCase()+'0123456789';
rusS=rusS+rusS.toLowerCase();

function encoder(text,m){
  let out='',s='',f=0,i=0,t=0,le=text.length;
  m = m? mEncode2 : mEncode1;
  for(i=0;i<le;i++){ 
   s=text.charAt(i);
   if(s=='~'){out+='~~';continue;}
   t=0;if(latS.indexOf(s)>=0)t=1;else if(rusS.indexOf(s)>=0)t=3;
   if(t===3){//rus
    if(f==0){f=1;out+='~';}
    s = m[s] || '?';
   }
   if(t===1)if(f==1){f=0;out+='~';}
   out+=s;
  }
  return out;
}

About

A new unambiguous Russian translit format. Provides Unicode Cyrillic compatibility for 7-bit channels, ANSI databases, and legacy terminals

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors