|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.04.2011, 17:52 | #1 |
Холост/Не замужем
Форумчанин
Регистрация: 13.11.2007
Сообщений: 283
|
Определение спец.символов в DBF базе
Здравствуйте.
У меня такая проблема, если DBF файл в нем есть поле KOD (character) значения в этом поле не повторяются, т.е. уникальные, вид данных в поле все символы из таблицы ASCII от 0 до 255, в Win кодировке некоторые не отображаются, а некоторые отображаются не правильно, но если я открываю DBF в FoxPro 2.6 то там все хорошо и разборчиво видно. Вообщем в Win мне эти символы и не нужны (я их хочу перевести в цифры), подскажите как это можно сделать. Пробовал переводить при помощи функции Ord но переводятся не все символы такие символы как 176, 177, 178 (dec из таблицы ASCII), в Win вообще нет и Win отображает их как # Как я понял все дело в кодировке и при обращении к данным из DBF я их оттуда беру уже в Win кодировке... Как вариант можно было бы получить Hex. Кто что посоветует??? |
25.04.2011, 09:05 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
много-много лет назад, при проектировании системы я придумал классную оптимизацию - вместо 8 значного числа переводить его в бинарный вид и хранить 3 байта. Чистой экономии 5 байт на одном числе. Таких чисел в одной записи - 12 итого - 60 байт. С учётом того, что таблица содержала от 100 тыс. записей, получается видимая экономия...
Но сейчас бы я так никогда не стал делать! Ибо, когда потребовалось получить данные из этого поля под Windows - выяснилось, что ADO просто напросто НЕ МОЖЕТ правильно передавать подобные величины (оно их поганит при передаче. причём так, что из полученной величины исходную уже не восстановишь!). Пришлось написать приблуду, которая по физическому номеру записи (это легко можно получить и через ADO) открывает файл как бинарный и вытаскивает нужное поле... Если интересно, то могу с этим помочь. кроме этого. Чтобы я ещё предложил. 1) если возможно (работа разовая, таблица не меняется) - то лучше всего конвертнуть эту базу(таблицу) в нормальную. (если надо - помогу и с этим вариантом) 2) попробовать читать таблицу через TDBF (или через другие компоненты. Например, через "Halcyon" ) не исключено, что есть и другие варианты решения... |
25.04.2011, 12:55 | #3 |
Холост/Не замужем
Форумчанин
Регистрация: 13.11.2007
Сообщений: 283
|
Спасибо что откликнулись, хотя я уже решил задачу...
В dbf файлах есть байт который отвечает за кодировку установленную в нем, вообщем у меня в файле изначально этот байт был выставлен как (cp866) после исправления этого байта на (cp1251) и установки шрифта Terminal все символы отобразились правильно А тема по вытаскиванию из бинарного файла нужного поля очень интересна... |
25.04.2011, 13:26 | #4 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Хорошо, что решили. Цитата:
|
||
25.04.2011, 13:29 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Либо же в том же фокспро его командами поменять. А вообще я лично выбрал вот что:http://pblog.ru/?p=364 И до сих пор не жалуюсь ни на скорость ни на кодировку.
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск в базе данных в dbf формате | Slimav41 | Помощь студентам | 7 | 12.03.2011 19:56 |
Определение таблиц в базе данных | gessi | SQL, базы данных | 2 | 22.11.2010 22:11 |
Вывод спец. символов в строку. Delphi | Horus92 | Помощь студентам | 2 | 27.08.2010 08:54 |