Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для Twi7ter
3 / 3 / 2
Регистрация: 27.03.2013
Сообщений: 147

Если работать через кодировку ascii то все ок, но она не воспринимает русские буквы

15.09.2014, 18:44. Показов 2390. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал прогу,которая кодирует и декодирует входной текст,работает она правильно за исключением одного момента:
При раскодировании текста, если в тексте были использованы запятые ,то они частично заменяются скобками ")", если работать ч/з кодировку ascii то все ОК,но она не воспринимает русские буквы.подскажите ,пожалуйста,что делать
вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ZI_1
{
 
 
    class Main
    {
        String text;
        String key;
      
        public Main(String text, String key)
        {
            this.text = text;
            this.key = key;
        
 
        }
 
 
 
 
       
        public string CodingText()
        {
            int j = 0;
 
            byte[] txt = System.Text.Encoding.GetEncoding("windows-1251").GetBytes(text);// код текста
            byte[] k = System.Text.Encoding.GetEncoding("windows-1251").GetBytes(key);//код ключа
            byte[] resCode = new byte[txt.Length];//список закодированных букв(цифры)
            // List<char> resLetter = new List<char>();//список закодированных букв(символы)
 
            for (int i = 0; i < txt.Length; i++, j++)
            {
                if (j >= k.Length)
                    j = 0;
                if (txt[i] + k[j] >= 256)
                {
 
                    resCode[i] = (byte)((txt[i] + k[j]) % 255);
                }
                else
                resCode[i] = (byte)(txt[i] + k[j]);
                r[i] = resCode[i];
 
            }
 
 
 
 
            return Encoding.Default.GetString(Encoding.Convert(Encoding.GetEncoding("windows-1251"), Encoding.Default, resCode));
 
        }
 
        public string DecodingText()
        {
            byte[] txt = System.Text.Encoding.GetEncoding("windows-1251").GetBytes(this.text);// код закодированного текста
            byte[] k = System.Text.Encoding.GetEncoding("windows-1251").GetBytes(key);//код ключа
            byte[] res = new byte[txt.Length];//дешифрованный текст
            int tmp = 0;
            int j = 0;
            for (int i = 0; i < txt.Length; i++, j++)
            {
                if (j >= k.Length)
                    j = 0;
 
                tmp = (txt[i] - k[j]);
 
                if (tmp <= 0)
                    res[i] =(byte)(tmp+255);
                else
                    res[i] =(byte) tmp;
 
            }
 
 
 
            return Encoding.Default.GetString(Encoding.Convert(Encoding.GetEncoding("windows-1251"), Encoding.Default, res)); ;
        }
 
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.09.2014, 18:44
Ответы с готовыми решениями:

Вывести все русские строчные буквы в порядке следования их кодов в таблице ASCII
вывести все русские строчные буквы в порядке следования их кодов в таблице ASCII

Сайт не воспринимает русские буквы
Всем привет, у меня такой вопрос: при попытке создать тикет в поддержку на моем сайте, сайт не воспринимает русские буквы, то есть если...

Компилятор не воспринимает русские буквы
Допустим. дано предложение: &quot;Я хочу выучить С++&quot;. Нужна найти количество вхождений буквы &quot;о&quot; в предложение. Как это сделать, если...

2
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
15.09.2014, 19:23
Цитата Сообщение от Twi7ter Посмотреть сообщение
что делать
Перво-наперво, откажитесь от затеи переводить байты зашифрованного текста обратно в строку: при декодировании нелегальные значения символов могут заменяться символами-заглушками, в результате чего теряются данные.
Перекодируйте массив байт в Base64-строку.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        public string CodingText()
        {
            ...
            return Convert.ToBase64String(resCode);
 
        }
 
        public string DecodingText()
        {
            byte[] txt = Convert.FromBase64String(this.text);
 
             ...
        }
1
 Аватар для Twi7ter
3 / 3 / 2
Регистрация: 27.03.2013
Сообщений: 147
15.09.2014, 19:49  [ТС]
kolorotur, попробовал ка вы написали сделать:
C#
1
byte[] txt = Convert.FromBase64String(this.text);
,выдает исключение:Недопустимая длина строки или массива знаков Base-64.

Добавлено через 7 минут
а не все норм,спасибо большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.09.2014, 19:49
Помогаю со студенческими работами здесь

Заголовок виджета не воспринимает русские буквы
Здравствуйте. Подскажите пожалуйста. Создал онлайн форму обратной связи. Вставляю код виджета к себе на сайт. Но заголовок виджета не...

Перевести в ASCII код русские буквы
Ребят, возникла проблема перевод в ascii код русские буквы. В инетрнете нашел что надо использовать unsigned char но он не правильно...

ASCII коды переводит на русские буквы
Пишут значит cout&lt;&lt;char(197); А мне буквы выводит а не символ,тот который надо.Что делать?

Как сменить кодировку, чтобы Лазарус понимал русские буквы?
Пртвет ,собственно при сохранение файла имя берётся из эдита и получаем файл с таким названием (РєСѓСЂР°) как сделать чтобы за место этой...

Вывести на консоль русские буквы, используя ASCII-коды
С англ и т.д. всё работает нормально, но как только пытаюсь вытащить код символа русской буквы, так VS2013 выдает отрицательное значение. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru