Набор символов File-Oracle

Я пытаюсь импортировать файл, используя UTL_FILE в oracle 11g, есть способ узнать, в какой кодировке находится файл?

То, что я пытаюсь сделать, это вернуть ошибку, когда кодировка файла отличается от UTF-8, чтобы избежать ошибок при вставке.


person Avhelsing    schedule 02.09.2016    source источник


Ответы (1)


Вероятно, нет (по крайней мере, не легко).

Если вам действительно повезет, файл будет начинаться с знака порядка следования байтов. это позволяет с достаточной степенью уверенности определить, что файл имеет кодировку UTF-8. Но это совершенно необязательный атрибут файла (и тот, который ваш код должен был бы отбросить перед чтением реальных данных в файле).

Кроме того, вы находитесь в сфере проверки данных и попытки определить наиболее вероятный набор символов. В общем, это сложно, особенно если у вас есть в основном английский файл, где по крайней мере первые несколько сотен или тысяч байтов файла могут быть как допустимыми 7-битными ASCII, так и UTF-8. Вы можете прочитать файл и посмотреть, есть ли какие-либо недопустимые кодовые точки UTF-8. Это не говорит вам окончательно, что это действительная UTF-8, но, вероятно, достаточно близко, чтобы действовать так, как будто это так.

person Justin Cave    schedule 02.09.2016