powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проблемы с кодировкой dbf файла.
22 сообщений из 22, страница 1 из 1
Проблемы с кодировкой dbf файла.
    #39108583
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Столкнулся с проблемой записи кириллицы в базу данных.
Привожу свой файл.
Код: c#
1.
2.
3.
4.
5.
6.
string strcon = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = D:\\; Extended Properties = dBase IV; User ID=;Password=";
                string query = "Select * from mOPLATA";
                OleDbConnection cnn = new OleDbConnection(strcon);
                cnn.Open();
                OleDbCommand cmd = new OleDbCommand(query, cnn);
                OleDbDataReader reader = cmd.ExecuteReader();


Нашел пример в интернете, но он у меня не работает:
Код: c#
1.
2.
3.
4.
5.
string value = "гЃЊ”Џ—“‹Џ… ›Џ““… „ЏЌ 256 ‹— 490 Ё-178";
var bytes_in = System.Text.Encoding.Default.GetBytes(value);
var bytes_out = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(866), System.Text.Encoding.GetEncoding(1251), bytes_in);
var DOS_WIN2 = System.Text.Encoding.GetEncoding(20866).GetString(bytes_out);
Console.WriteLine(DOS_WIN2);
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39108654
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39108665
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя файл скорее всего в кодировке 1251, а Microsoft.Jet.OLEDB только 866 признает.
Тут пример разбора DBF как файла http://nansoft.ru/blog/csharp/30.html
Кодировку задать в строке
Код: c#
1.
string l = System.Text.Encoding.GetEncoding(Encoding.UTF8.HeaderName).GetString(...


в случае 1251
Код: c#
1.
string l = System.Text.Encoding.GetEncoding(1251).GetString(...
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39108746
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как адаптировать строку если вставить в эту строку переменную типа string.
Код: c#
1.
string l = System.Text.Encoding.GetEncoding(Encoding.UTF8.HeaderName).GetString(buffer, Index, FieldSize[i]).TrimEnd(new char[] { (char)0x00 }).TrimEnd(new char[] { (char)0x20 });
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39108780
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456Нашел пример в интернете, но он у меня не работает:
Кривой какой-то пример. Он не должен работать. Попробуй так
Код: c#
1.
2.
var bytes = System.Text.Encoding.GetEncoding(866).GetBytes(value); // Возврат строки в исходное "байтовое" состояние
var result = System.Text.Encoding.GetEncoding(1251).GetString(bytes); // Конвертация из кодировки 1251
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39108886
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня кодировка utf-8
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39108900
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456У меня кодировка utf-8
Где?
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39108922
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой код 18446387 проверь, должно сработать с твоим OleDb
Код: c#
1.
2.
3.
var bytes = System.Text.Encoding.GetEncoding(866).GetBytes(value); // Возврат строки в исходное "байтовое" состояние
var result = System.Text.Encoding.GetEncoding(1251).GetString(bytes); // Конвертация из кодировки 1251
Console.WriteLine(result);
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39108958
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению не работает.
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39108961
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456К сожалению не работает.
Это не тот случай, когда "краткость-сестра таланта".
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39108974
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что нужно еще рассказать.
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39108981
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я переписываю данные из dbf файла в базу mysql. База с кодировкой utf-8.
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39108982
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456Что нужно еще рассказать.
Ну, хотя бы более конкретнее сказать, как "не работает". Ошибку выдает? Или не возвращает ожидаемого значения? Или вообще ничего не возвращает?

П.С. Тут и с более детальными объяснениями не всегда помогают. А уж с такими краткими ответами можно и вовсе не достичь нужного результата. ИМХО, конечно, правда, из личных наблюдений основано.
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39108992
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456К сожалению не работает.
у меня работает
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
        static void Test(string file) {
            OleDbConnection cn = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + Path.GetDirectoryName(file) + "; Extended Properties = dBase IV; User ID=;Password=");
            cn.Open();
            OleDbDataAdapter ad = new OleDbDataAdapter("Select top 1 * from " + Path.GetFileNameWithoutExtension(file), cn);
            DataSet ds = new DataSet("TABLE");
            ad.Fill(ds);
            foreach (DataRow row in ds.Tables[0].Rows) {
                foreach (DataColumn column in ds.Tables[0].Columns) {
                    var value = row[column].ToString();
                    var bytes = System.Text.Encoding.GetEncoding(866).GetBytes(value);
                    var res = System.Text.Encoding.GetEncoding(1251).GetString(bytes);
                    Console.WriteLine(res);
                }
            }
        }

        static void Main(string[] args) {
            Test(@"C:\\Base\\file.dbf");
            Console.ReadKey();
        }


У тебя DBF изначально в какой кодировке ? Выкладывай образец
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39109001
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Записал значение в MessageBox.Show кодировка работает и без преобразования.
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39109004
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В mysql выдает в поле ?????? ?.?.
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39109005
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456Я переписываю данные из dbf файла в базу mysql. База с кодировкой utf-8.
По шагам решай задачу:
Шаг 1: Прочитать данные из DBF чтобы программа понимала их в правильной кодировке.
Шаг 2: Записать данные в БД

Занимайся первым, второе пока просто забудь. Сведи задачу к прочитать из DBF и вывести в консоль. Как в консоли будет читаемо, переходи к записи в БД.

Исходи из того что внутри программы правильная кодировка, т.е. пофиг какая, но корректно обрабатываемая средствами языка.
Тогда задача по перекодированию будет так стоять:
1. Почитать данные из DBF с приведением в правильную кодировку
2. Записать в БД с конвертацией из правильной в utf-8
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39109010
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кодировка базы mysql utf8_general_ci
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39109022
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтение из dbf файла происходит нормально я выводил значение в messagebox и в грид не используя перекодировку. Запись в поле базы mysql происходит, но с кракозябрами.
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39109029
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456Запись в поле базы mysql происходит, но с кракозябрами.
Заведи новый топик и не упоминай там DBF.
Реши задачу: выполнить запрос в MySql
Код: sql
1.
insert into MyTable (Name, Fam) values ('Вася', 'Пупкин')
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39109040
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Меняю кодировки в самой базе при любой кодировки стоят знаки вопросов значит нужно менять кодировку программно.
...
Рейтинг: 0 / 0
Проблемы с кодировкой dbf файла.
    #39109067
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456Меняю кодировки в самой базе при любой кодировки стоят знаки вопросов значит нужно менять кодировку программно.
Бесполезно. У тебя в базу записались вопросы. Знак вопроса одинаков во всех кодировках.

По MySQL не подскажу, не сталкивался и тестить не на чем.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проблемы с кодировкой dbf файла.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]