Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/65: Рейтинг темы: голосов - 65, средняя оценка - 4.82
31 / 3 / 0
Регистрация: 21.01.2010
Сообщений: 22

C#, MySQL и кодировки

21.01.2010, 23:20. Показов 11883. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не знаю почему но C# упорно отказывается добавлять данные в кодировке cp1251, а добавляет в кодировке ср866.

Что сделал:
1. Прописал в файле my.ini по дефолту везде кодировку cp1251
2. Для подключения к базе данных использую строку: "server=localhost;database=scrubs;uid=ro ot;password=1234;charset=cp1251;" Она находится в поле textBox1.Text.
В поле textBox2.Text прописывается такой запрос: "select * from sotrudniki;"
И данные которые добавлялись в мускул вручную через консоль отображаются крякозябрами, а которые добавлялись через прогу нормально. Только в консоле мускула они наоборот отображаются крякозябрами.
Устанавливая значения character_set_results, я пришел к выводу, что прога сохраняет данные в кодировке cp866. Только откуда она вылезла я никак не могу понять.

Исходник программы:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data;
using MySql.Data.MySqlClient;
using MySql.Data.Types;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private MySqlConnection cnx = new MySqlConnection();
        MySqlDataReader red;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            cnx.ConnectionString = textBox1.Text;
            try
            {
                cnx.Open();
                MySqlCommand _MySqlCommand = new MySqlCommand("SET NAMES cp1251", cnx);
                MessageBox.Show("OK");
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            dataGridView1.DataSource = null;
            MySqlDataAdapter ad = new MySqlDataAdapter(textBox2.Text, cnx);
            DataSet ds = new DataSet();
             ad.Fill(ds);
             if (ds.Tables.Count > 0)
             {
                 dataGridView1.DataSource = ds.Tables[0];
             }
             MySqlCommand cmd = new MySqlCommand(textBox2.Text, cnx);
             red = cmd.ExecuteReader();
        }
 
    }
}
В общем, я без понятия, что еще нужно, чтобы данные добавлялись в кодировке cp1251
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.01.2010, 23:20
Ответы с готовыми решениями:

Кодировки в MySQL
Здраствуйте! у меня вот такая проблема: если создать таблицу в мускл.ехе примерно так: CREATE TABLE Language ( ...

Кодировки и проблемы в MySQL
Есть база в Access которую "мигрировал" в MySQL после чего были проблемы с кодировками поставил utf8 ошибки перестали появляться но...

Установка кодировки Mysql
В phpmyadmin справа на главной странице пишет: Сервер: Localhost via UNIX socket Версия сервера: 5.0.77-log Версия протокола: 10 ...

10
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
22.01.2010, 09:10
Добвляйте кодировку при подключении (в MySQLConnection)
0
31 / 3 / 0
Регистрация: 21.01.2010
Сообщений: 22
22.01.2010, 20:07  [ТС]
"MySqlConnection cnx = new MySqlConnection();"
"cnx.ConnectionString = textBox1.Text;"
а в textBox1 прописано "server=localhost;database=scrubs;uid=ro ot;password=1234;charset=cp1251;"
что еще нужно? или я не туда прописываю?

Добавлено через 4 часа 40 минут
в общем нифига не работает(((
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
22.01.2010, 22:22
А при создании БД и таблиц тоже указывали cp1251? если нет, то попробуйте пересоздать
0
31 / 3 / 0
Регистрация: 21.01.2010
Сообщений: 22
22.01.2010, 22:24  [ТС]
а можно примерчик, а то я в С# новичек
0
4 / 4 / 3
Регистрация: 01.07.2009
Сообщений: 127
23.01.2010, 11:03
Цитата Сообщение от dened Посмотреть сообщение
а можно примерчик, а то я в С# новичек
тут c# не причем !

Нужно после установки связи с мускулом послать строку

"SET NAMES cp1251" !
0
31 / 3 / 0
Регистрация: 21.01.2010
Сообщений: 22
23.01.2010, 12:32  [ТС]
Цитата Сообщение от malik555 Посмотреть сообщение
тут c# не причем !

Нужно после установки связи с мускулом послать строку

"SET NAMES cp1251" !
ну дык делаю же:
MySqlCommand _MySqlCommand = new MySqlCommand("SET NAMES cp1251", cnx);
0
4 / 4 / 3
Регистрация: 01.07.2009
Сообщений: 127
23.01.2010, 14:43
Цитата Сообщение от dened Посмотреть сообщение
ну дык делаю же:
MySqlCommand _MySqlCommand = new MySqlCommand("SET NAMES cp1251", cnx);

а да извиняюсь не увидел !
0
niktob
23.01.2010, 17:05
Тажа проблема только в бесике2008, перепробывал все что нашел в сети:
При подсоединении
StringConnectToBDMySQL = "DRIVER=" & tDriver & ";" & _
"SERVER=" & tServer & ";" & _
"DATABASE=" & tDB & ";" & _
"UID=" & tUID & ";" & _
"PASSWORD=" & tPass & ";" & _
"OPTION=" & tOpt & ";" & "charset=utf8;"
Подменял на
'& "charset= cp1251_koi8;"
'characterEncoding = win1251
'characterSetResults = win1251
'characterEncoding = utf - 8
'characterSetResults = utf - 8
'set character set cp 1251

Команды после подключение к базе
'OdbcCommand1.CommandText = "set character_set_client=cp1251;"
'StatusConnection = OdbcCommand1.ExecuteNonQuery()
'OdbcCommand1.CommandText = "set character_set_results=cp1251;"
'StatusConnection = OdbcCommand1.ExecuteNonQuery()
'OdbcCommand1.CommandText = "set collation_connection=cp1251_koi8;"
'StatusConnection = OdbcCommand1.ExecuteNonQuery()
'OdbcCommand1.CommandText = "SET NAMES cp1251;"
'OdbcCommand1.CommandText = "create database ttttt;"
'OdbcCommand1.CommandText = "set character set cp1251;"
'OdbcCommand1.CommandText = "set CHARACTER SET cp1251_koi8;"
OdbcCommand1.CommandText = "SET NAMES cp1251;"

Не чего не помогает в грде отображаются в метор руской речи "?".
Если получится незабудь чернуть

Добавлено через 41 минуту
Вот я критин. Везде ключ был а я тупил - извеняюсь за мой мусор.
В моей ситуации:
1. В базе MySQL таблицы с кодировкой cp 1251
2. В VB.NET
Строку подключения оставил тужу.
А далее испровил обращение к MySQL о чем писалсь выше и везде в инете
PureBasic
1
2
3
4
5
            Dim myCommandText As String
            myCommandText = Me.OdbcCommand1.CommandText
            Me.OdbcCommand1.CommandText = "SET NAMES cp1251;"
            StatusConnection = OdbcCommand1.ExecuteNonQuery()
            Me.OdbcCommand1.CommandText = myCommandText
И все кодировка исправилась.
Причина моих неудач я думаю было в том что: я на форму сначала скинул и настроел элемент OdbcDataAdapter и когда я скинул объект OdbcCommand (хоть его на форме видно небыло, он был и появился при настройке адаптера) В результате посылая команду Me.OdbcCommand1.CommandText = "SET NAMES cp1251;" он почемуто глючил с адаптером. По чистой случайности когда я зашел в адаптер и исправил кретерий запроса к базе у меня перестала создаваться база в прошлом и тогда дошло что
OdbcCommand уже использется и соответвенно для результата надо сначало послать "SET NAMES cp1251;", а далее обращатся к базе.
Ура
31 / 3 / 0
Регистрация: 21.01.2010
Сообщений: 22
24.01.2010, 14:36  [ТС]
не помогло((((
0
niktob
25.01.2010, 13:09
Бросаю мой исходник на VB и базу данных с одной таблицей, может чтото упускаю. Но у меня все ОК с кодировкой
Вложения
Тип файла: rar spektr.rar (479 байт, 43 просмотров)
Тип файла: rar проект.rar (167.0 Кб, 49 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.01.2010, 13:09
Помогаю со студенческими работами здесь

Ошибки кодировки mysql
Здравствуйте! Произошла у меня такая трабла: одна таблица нормально отображается, русский, английский язык - не зависит от этого, во-второй...

Кодировки Mysql Workbench
Добрый день. Не получается вставить данные в таблицу. Использую ОС Linux Ubuntu, mysql workbench, та и все. В базе кодировка стоит utf8, на...

MySQL настройка кодировки
Как изменить кодировку в UTF-8, при выводе, записи и обновлении.

Не совпадают кодировки MySql и PHP
База в кодировке ср1251, код в NotePad++ в кириллице Windows-1251, в итоге получаю где в базе были русские буквы -...

Разные кодировки в MySQL и PHP
блин знаю что проблема уже не новша, но столкнулся с проблемой кодировок, в базе содержится русский текст и при выводе его на страницу...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru