powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / перекодировать dataset c#
4 сообщений из 4, страница 1 из 1
перекодировать dataset c#
    #38620361
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, получаю данные из бд фокса, необходимо отобразить в нормальной кодировке. кодировка в базе дос (866). как бы сделать перекодировку еще до заливания в датагрид?


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
          conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\\;Extended Properties=dBASE IV;User ID=;Password=;";
                conn.Open();
                OleDbCommand comm = conn.CreateCommand();
              string ttime = "13/03/2014 00:00:00";
            comm.CommandText = @"SELECT  PRODUKT, NOMER, FEMGN, FEOBS, DATA, TIME FROM ANALIZ  WHERE [DATA] > #" +max + "# or ([DATA] = #" + max + "# and [TIME] > #" + maxtime + "#)";
                dt.Load(comm.ExecuteReader());
                label2.Text ="row: "+ dt.Rows.Count.ToString() + " column: " + dt.Columns.Count.ToString();
                dataGridView1.DataSource = dt;
...
Рейтинг: 0 / 0
перекодировать dataset c#
    #38620371
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо указать в заголовке кодовую страницу 866. Для этого установить 29й байт в 101
На фоксе так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
func SetCP866
lpara tcFile
local lnH, llOk
lnH = FOPEN(tcFile, 2)
if lnH > 0
	FSEEK(lnH, 29)
	FWRITE(lnH, CHR(101))
	FCLOSE(lnH)
	llOk = .T.
endif
return llOk


на С# сам перепиши.
...
Рейтинг: 0 / 0
перекодировать dataset c#
    #38620429
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на сях
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    public void ConvertMe() {         
                for (int tt = 0; tt < this.dataGridView1.RowCount - 1; tt++)
                {
                    string o = dt.Rows[tt][1].ToString();
                    var fromEncodind = Encoding.GetEncoding(1252);//из какой кодировки
                    var bytes = fromEncodind.GetBytes(o);
                    var toEncoding = Encoding.GetEncoding(1251);//в какую кодировку
                    string nom = toEncoding.GetString(bytes);
                    dt.Rows[tt][1]= nom; 
                }
...
Рейтинг: 0 / 0
перекодировать dataset c#
    #38620449
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В заголовке dbf должна быть указана кодовая страница (в 29-м байте)
Если указана 866 (значение 101) - конвертация в 1251 должна пройти автоматом.
Если не указана ( стоит 0) то конвертировать после чтения, что ты и делаешь. Не указана она обычно у старых досовских прог, FPD например. Если ты этот байт установишь - для той проги проблем никаких не будет, она этот байт просто игнорирует.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / перекодировать dataset c#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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