русские буквы в шифре Атбаш
данный скрипт должен переводить букву на противоположную в алфавите(а->я, б->ю и т.д.), но работает это только для английского алфавита. как сделать, чтобы работало с русским?
Код:
<!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, время: 20:45. |