русские буквы в шифре Атбаш
данный скрипт должен переводить букву на противоположную в алфавите(а->я, б->ю и т.д.), но работает это только для английского алфавита. как сделать, чтобы работало с русским?
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
Этот код вообще нерабочий, в JavaScript строки в юникоде, код буквы «а» 1072, какой символ вы ожидаете получить от кода -1072?
Тут либо словарь замен составлять: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>…</title> <style> </style> </head> <body> <input id="source-text" type="text"> <input id="encoded-text" type="text"> <script> var source = document.getElementById("source-text"), encoded = document.getElementById("encoded-text"), replacements = { "А": "Я", "Б": "Э", "В": "Ю", "Г": "Ь", "Д": "Ы", "Е": "Ъ", "Ё": "Щ", "Ж": "Ш", "З": "Ч", "И": "Ц", "Й": "Х", "К": "Ф", "Л": "У", "М": "Т", "Н": "С", "О": "Р", "П": "П", "Р": "О", "С": "Н", "Т": "М", "У": "Л", "Ф": "К", "Х": "Й", "Ц": "И", "Ч": "З", "Ш": "Ж", "Щ": "Ё", "Ъ": "Е", "Ы": "Д", "Ь": "Г", "Э": "В", "Ю": "Б", "Я": "А" }; source.onkeyup = function encode() { encoded.value = source.value.replace(/[а-яА-ЯёЁ]/g, function (letter) { return replacements[letter.toUpperCase()]; }); }; </script> </body> </html> либо массив букв и заменять по следующему правилу: Цитата:
|
моя ошибка, пропустил число, с ним всё работает отлично:
ret += String.fromCharCode(155 - str[i].toUpperCase().charCodeAt(0)); странно, на чистой html странице ваш код не работает. сменил кодировку на windows-1251 и всё заработало. не потому ли, что utf-8 не поддерживает русский? |
Часовой пояс GMT +3, время: 15:19. |