| 
 | 
| 
 
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  IBExpert 2019.12.25.1 Firebird-2.5.8-32 (но это видимо не важно). Через IBEscript загружал данные из xls в базу. Все работало. Файл xls вырос, и данные уперлись в дно (65536 записей). Перешел на офис поновее и формат файла пришлось по менять на xlsx -дно отдалилось примерно на миллион строк. Теперь проблема загрузить этот файл в базу. В IBExpert 2019.12.25.1 запускаю "Инструменты" - "Импорт данных" Файл отрывается, но все текстовые поля - "кракозябрами". Установка галочки "конвертировать строки из OEM в ANSI" характер кракозябр меняет, но все равно фигня. Предполагаю что в xlsx данные в юникоде и читать их нужно уже по другому. Это недоработка в IBExpert или я что-то не так делаю? Можно надеяться на исправление этой ошибки? И в IBESсript? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 09.01.2020, 10:58 | 
  
  
  
   | 
||
| 
 
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Тут нет никакой ошибки. Данные отображаются "как есть", на импорт это не влияет. Хочешь видеть их как юникод - справа над сеткой превью есть соответствующая пипка. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 09.01.2020, 11:55 | 
  
  
  
   | 
||
| 
 
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Ага, пипку увидел, и превью нормальными буквами получилось. Но получается что я прочитал из xlsx данные в юникоде а потом засунул их в поле win1251. У меня и база win1251 и коннект такой же. В каком месте можно перекодировать из юникода в win1251? Или нужно в таблице в в которую делается импорт, сделать поля юникодные, а потом уже оттуда кастить в другие поля как win1251? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 09.01.2020, 12:36 | 
  
  
  
   | 
||
| 
 
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  И кстати, при импорте была бы наверное уместна галка, по аналогии с существующей: [ ] конвертировать строки из OEM в ANSI [ ] конвертировать строки из Unicode в ANSI ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 09.01.2020, 12:39 | 
  
  
  
   | 
||
| 
 
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  База создана как Код: plsql 1. 2. 3. 4. Коннект тоже как win1251. Если в мастере импорта сказать - создавай новую таблицу - то он ее создает, без дополнительного указания чарсета полей, они получаются дефолтные win1251, и туда пихается юникодные данные. Так и должно быть? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 09.01.2020, 12:49 | 
  
  
  
   | 
||
| 
 
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  fraks Коннект тоже как win1251. Если в мастере импорта сказать - создавай новую таблицу - то он ее создает, без дополнительного указания чарсета полей, они получаются дефолтные win1251, и туда пихается юникодные данные. Так и должно быть? Что подсовываешь, то и будет пихаться. Но не факт, что запихнется. Для импорта данных в utf8 чарсет коннекта должен быть тоже utf8, разумеется. Эксперт ничего конвертировать не будет, с этим прекрасно справляется сервер. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 09.01.2020, 14:03 | 
  
  
  
   | 
||
| 
 
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  fraks В каком месте можно перекодировать из юникода в win1251? Или нужно в таблице в в которую делается импорт, сделать поля юникодные, а потом уже оттуда кастить в другие поля как win1251? Сервер тебе перекодирует в win1251, если из utf8-коннекта ты будешь пихать utf8-данные в таблицу с полями win1251. Не нужно никакие юникодные поля городить, если они тебе не нужны. Но если у тебя в данных не только win1251 окажется, то получишь ошибку транслитерации. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 09.01.2020, 14:06 | 
  
  
  
   | 
||
| 
 
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  IBExpert fraks В каком месте можно перекодировать из юникода в win1251? Или нужно в таблице в в которую делается импорт, сделать поля юникодные, а потом уже оттуда кастить в другие поля как win1251? Сервер тебе перекодирует в win1251, если из utf8-коннекта ты будешь пихать utf8-данные в таблицу с полями win1251. Не нужно никакие юникодные поля городить, если они тебе не нужны. Но если у тебя в данных не только win1251 окажется, то получишь ошибку транслитерации. Данных в UTF8 (в Excel) у меня вроде не было. Законнектился к базе как UTF8 и импортировал в таблицу с полями win1251. На определенной записи получил Malformed string. Посчитал что это именно тот случай - в исходных данных появился UTF8. Поскольку эта база у меня перевалочная - я загружают в нее данные из Excel только для того что бы по ним выполнить SQL-запросы и потом опять выгрузить в другие Excel - то решил что зачем мне бороться с перекодированием, проще базу и поля сделать UTF8. Сделал. Загружаю данные - опять 25, опять Malformed string. Лезу в указанную запись и нахожу там вместо строки формулу. Вместо "СКТ2" написана формула "=+B31347" Убираю формулу - файл грузится. Возможно и не требовалось переходить на UTF8, но уж ладно. Далее пришла мысль, что раз я при импорте указываю маппинг полей, то зачем я пересохраняю исходный файл с другими именами полей, пригодными для DBF. Оказалось что и тут c UTF проблемка. Имена полей видимо тоже в UTF8. Однако что странно, в предпросмотре данные выглядят закорючками пока пипку не нажмешь, но заголовки колонок (имена полей, первая строка в Excel-файле) показываются всегда правильно. Идем на вкладку маппинга - а там они же закорючками. И в IBEBlock - тоже закорючки. Какая-то не очень ровная картинка получается. Одни и те же данные где-то отображаются сразху правильно, где-то требуют пипки, а где-то (в маппинге) персональной пипки нет, а пипка от предпросмотра на маппинг не распространяется. И допустим, для предпросмотра сделается доп.пипка, а что в IBEBlock произойдет? Ничего? Или можно исходник сохранить в UTF8 и писать сразу понятные имена? Могут скрипты быть в UTF8? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 12.01.2020, 00:22 | 
  
  
  
   | 
||
| 
 
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  fraks Загружаю данные - опять 25, опять Malformed string. Значит, в какой-то ячейке не utf8. fraks Какая-то не очень ровная картинка получается. Одни и те же данные где-то отображаются сразху правильно, где-то требуют пипки, а где-то (в маппинге) персональной пипки нет, а пипка от предпросмотра на маппинг не распространяется. Я же уже сказал: предпросмотр на сам импорт никак не влияет. fraks И допустим, для предпросмотра сделается доп.пипка, а что в IBEBlock произойдет? Ничего? Или можно исходник сохранить в UTF8 и писать сразу понятные имена? Могут скрипты быть в UTF8? Возьми и проверь, что произойдет. Ничто не мешает создать таблицу заранее с нужными именами полей и затем импортировать туда данные. Маппинг по индексу делай, а не по имени. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 12.01.2020, 13:06 | 
  
  
  
   | 
||
| 
 
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  IBExpert fraks Загружаю данные - опять 25, опять Malformed string. Значит, в какой-то ячейке не utf8. Я нашел эту ячейку: fraks Загружаю данные - опять 25, опять Malformed string. Лезу в указанную запись и нахожу там вместо строки формулу. Вместо "СКТ2" написана формула "=+B31347" Убираю формулу - файл грузится. ИМХО тут не с юникодом проблема. IBExpert fraks Какая-то не очень ровная картинка получается. Одни и те же данные где-то отображаются сразху правильно, где-то требуют пипки, а где-то (в маппинге) персональной пипки нет, а пипка от предпросмотра на маппинг не распространяется. Я же уже сказал: предпросмотр на сам импорт никак не влияет. fraks И допустим, для предпросмотра сделается доп.пипка, а что в IBEBlock произойдет? Ничего? Или можно исходник сохранить в UTF8 и писать сразу понятные имена? Могут скрипты быть в UTF8? Возьми и проверь, что произойдет. Ничто не мешает создать таблицу заранее с нужными именами полей и затем импортировать туда данные. Маппинг по индексу делай, а не по имени. Весьма неудобно отлаживать эти скрипты из-за невнятной диагностики. То ошибка без указания в где конкретно, то ошибка целиком на блок в несколькько экранов, то неверная диагностика. Единственный метод отладки - закомментаривать код до пропадения ошибок и потом постепенно его раскомментаривать. Да и то, каменты не в любое место можно втыкать. Например комментирование -- внутри многострочной команды не работает. Много времени потерял из-за этого: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. DATA - это имя первого поля в маппинге. Я перевожу диагностику как ошибка при указании имени поля/индекса поля в источнике. Долго искал в чем проблема, как задать имя поля, что там с кодировками... В то время как я тупо ошибся в путях и ошибка должна была быть: "файл не найден". ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 13.01.2020, 10:09 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=42&gotonew=1&tid=1598686]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    12ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    54ms | 
get topic data:  | 
    12ms | 
get first new msg:  | 
    8ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    53ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 231ms | 
| total: | 393ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.