Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2016, 11:38   #1
rinoolik
Пользователь
 
Регистрация: 20.11.2012
Сообщений: 42
Восклицание Текст выводится иероглифами

Здравствуйте! У меня в программе текст выводится какими-то иероглифами. Как это исправить? Kак сделать, чтобы выводилось русскими буквами?!

Сам код и программа приложена.
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System WINDOWS.Forms;
 
namespace гаммирование
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
        private string normalize(string source, string key)
        {
            for (int i = key.Length, j = i; i < source.Length; i++, j++)
            {
                if (j >= key.Length)
                    j = 0;
                key += key[j];
            }
            return key;
        }
        private string coding(string source, string key)
        {
            string encod = "";
            for (int i = 0; i < source.Length; i++)
                encod += ((char)((int)source[i] + (int)key[i])).ToString();
            return encod;
        }
        private string decoding(string encoded, string key)
        {
            string source = "";
            for (int i = 0; i < encoded.Length; i++)
                source += ((char)((int)encoded[i] - (int)key[i])).ToString();
            return source;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
                MessageBox.Show("Вы не ввели строку!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            if (textBox2.Text == "")
                MessageBox.Show("Вы не ввели ключ!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            string source = textBox1.Text;
            string key = normalize(source, textBox2.Text);
            string encoded = "";
            encoded = coding(source, key);
            textBox3.Text = encoded;
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            string source = textBox1.Text;
            string key = normalize(source, textBox2.Text);
            string decoded = "";
            if (textBox3.Text == "")
                MessageBox.Show("Невозможно расшифровать пустую строку!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            decoded = decoding(source, key);
            textBox4.Text = coding(decoded, key);
        }
 
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void textBox2_KeyPress_1(object sender, KeyPressEventArgs e)
        {
            char ch = e.KeyChar;
            if (!Char.IsDigit(ch) && ch != 8) //Если символ, введенный с клавы - не цифра (IsDigit),
                e.Handled = true;// то событие не обрабатывается. ch!=8 (8 - это Backspace)
        }
 
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar) == true)
                e.Handled = true;
        }
    }
}
Изображения
Тип файла: jpg Безымянный.jpg (26.7 Кб, 115 просмотров)
Вложения
Тип файла: rar гаммирование.rar (36.4 Кб, 15 просмотров)
rinoolik вне форума Ответить с цитированием
Старый 22.11.2016, 11:51   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Причем тут вывод?
Скорее всего шифрование/расшифровка неправильно реализовано, вот и не расшифровывается.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.11.2016, 11:55   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,783
По умолчанию

А с чего вы решили, что зашифрованный текст будет так же читаться на русском? Вы по модолю брали и загоняли в границы - нет...
p51x вне форума Ответить с цитированием
Старый 22.11.2016, 14:41   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, минимальные изменения можно сделать такие:
Код:
        private string coding(string source, string key)
        {
            string encod = "";
            for (int i = 0; i < source.Length; i++)
            	encod += ((char)((int)source[i] + ((int)key[i]-0x30))).ToString();
            return encod;
        }
        private string decoding(string encoded, string key)
        {
            string source = "";
            for (int i = 0; i < encoded.Length; i++)
            	source += ((char)((int)encoded[i] - ((int)key[i]-0x30))).ToString();
            return source;
        }
но, как сказано выше, это не панацея - ведь Вы просто добавляете ключевое значение, не беря модуль.
поэтому, если сместить букву "П" на единицу, получим букву "Р"
если сместить букву "р" на две позиции, получим "т"
а вот если сместить букву "я" на 3 позиции - то какая буква должна получится?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.11.2016, 19:58   #5
rinoolik
Пользователь
 
Регистрация: 20.11.2012
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение

но, как сказано выше, это не панацея - ведь Вы просто добавляете ключевое значение, не беря модуль.
поэтому, если сместить букву "П" на единицу, получим букву "Р"
если сместить букву "р" на две позиции, получим "т"
а вот если сместить букву "я" на 3 позиции - то какая буква должна получится?!
ну если сместить "я" на 3 позиции то должно получится "в". но да,получается какая-то закорючка. и как это исправить?
rinoolik вне форума Ответить с цитированием
Старый 22.11.2016, 20:09   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,090
По умолчанию

Цитата:
Сообщение от rinoolik Посмотреть сообщение
ну если сместить "я" на 3 позиции то должно получится "в". но да,получается какая-то закорючка. и как это исправить?
Если символ > 'я', значит символ = 'А' + символ - 'я'
pu4koff вне форума Ответить с цитированием
Старый 22.11.2016, 20:11   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от rinoolik Посмотреть сообщение
ну если сместить "я" на 3 позиции то должно получится "в". но да,получается какая-то закорючка
Вы не в курсе, что в C# юникод и символ не 1 байт?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не выводится текст в Label vovik93 C# (си шарп) 5 12.10.2012 14:13
ПЕЧАТЬ ИЕРОГЛИФАМИ sher_man Microsoft Office Word 1 23.06.2011 08:08
Не выводится текст парсинга bulldog5293 Работа с сетью в Delphi 0 30.04.2011 18:26
Не выводится текст статьи из БД (PHP,MySQL) Mysqler Помощь студентам 1 19.05.2010 21:26