Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Принудительно преобразовать строку в UTF8 / 10 сообщений из 10, страница 1 из 1
06.01.2016, 15:14
    #39142740
azsx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительно преобразовать строку в UTF8
Получаю целиком в строку содержимое текстового файла. Эти файлы далеко не всегда созданы в utf8, возможны другие кодировки (в том числе арабы, китайцы и прочие). Какая кодировка в конкретном случае я не знаю. Мне надо записать эту переменную целиком в postgresql в поле text, который в формате utf8. Если в файле есть хоть один символ не utf8 - то postgres выводит исключение и не записывает запись. Так и пишет, такой то символ - не utf8. Нужен текст, так как потом буду по тексту искать фразы. Вопросы:
1. Как перед записью в базу преобразовать переменную в utf8, а затем вернуть как она была?
2. Если первое невозможно, то как принудительно преобразовать (исключить) все символы не utf8?
3. Может есть какой то иной более правильный способ?
...
Рейтинг: 0 / 0
06.01.2016, 15:37
    #39142746
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительно преобразовать строку в UTF8
azsxПолучаю целиком в строку содержимое текстового файла. Эти файлы далеко не всегда созданы в utf8, возможны другие кодировки (в том числе арабы, китайцы и прочие). Какая кодировка в конкретном случае я не знаю. Мне надо записать эту переменную целиком в postgresql в поле text, который в формате utf8. Если в файле есть хоть один символ не utf8 - то postgres выводит исключение и не записывает запись. Так и пишет, такой то символ - не utf8. Нужен текст, так как потом буду по тексту искать фразы. Вопросы:
1. Как перед записью в базу преобразовать переменную в utf8, а затем вернуть как она была?
2. Если первое невозможно, то как принудительно преобразовать (исключить) все символы не utf8?
3. Может есть какой то иной более правильный способ?

1 - можно если в bytea а не в text писать но тогда не будет поиска по нему.

2 - Эта задача решается на уровне вашей программы а не базы.
Так что разбирайтесь с используемым языком программирования.

3 - см ответ на 2.
...
Рейтинг: 0 / 0
06.01.2016, 16:39
    #39142772
azsx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительно преобразовать строку в UTF8
авторможно если в bytea а не в text писать но тогда не будет поиска по нему.
поиск нужен.
авторЭта задача решается на уровне вашей программы а не базы.
у меня lazarus (аналог делфи). Можно ли посмотреть пример хоть на каком нибудь языке программирования как решается моя задача? Так как пока я ваще решения понять не могу.
...
Рейтинг: 0 / 0
06.01.2016, 17:09
    #39142784
fte
fte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительно преобразовать строку в UTF8
azsxвозможны другие кодировки (в том числе арабы, китайцы и прочие). Какая кодировка в конкретном случае я не знаю

Ваша задача в общем случае не решается, даже если к примеру Вам будут присылать файлы только в русских кодировках можно рассуждать только о некой вероятности распознавания кодировки почитайте

Поэтому возможно только частное решение задачи ( с использованием дополнительных или специальных признаков )
...
Рейтинг: 0 / 0
06.01.2016, 17:10
    #39142787
azsx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительно преобразовать строку в UTF8
авторПоэтому возможно только частное решение задачи ( с использованием дополнительных или специальных признаков )
что это за решения?
...
Рейтинг: 0 / 0
06.01.2016, 18:52
    #39142816
fte
fte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительно преобразовать строку в UTF8
azsxчто это за решения?

Ну, например в каждом Вашем файле должна присутствовать некая фиксированная фраза(слово), тогда зная её бинарное представление в каждой из кодировок можно определить кодировку....
...
Рейтинг: 0 / 0
07.01.2016, 03:19
    #39142924
azsx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительно преобразовать строку в UTF8
дело в том, что меня не интересует какая там кодировка. Мне надо просто загнать эти файлы в поле text.
...
Рейтинг: 0 / 0
07.01.2016, 12:04
    #39142969
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительно преобразовать строку в UTF8
azsx,

если файл в себе не несёт мета-информацию, о том какую кодировку надо использовать, для интерпретации байт находящихся в этом самом файле, то остаётся только брут форс метод (пытатся интерпретировать набор байт под разными кодировками) и смотреть какая кодировка подойдёт. но брут форс, думаю, не будет 100% коректно опознавать, а значит будут факты порчи или даже утраты данных. вариант который вам предлагали более жизнеспособен. другой вариант решения задачи - бить по бошке тех, кто присылает файлы, чтоб они соблюдали договорённость о том, что файлы должны быть в UTF-8 кодировке (если такая договорённость имеет место быть).
...
Рейтинг: 0 / 0
07.01.2016, 15:16
    #39143033
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительно преобразовать строку в UTF8
azsxдело в том, что меня не интересует какая там кодировка. Мне надо просто загнать эти файлы в поле text.

text без какой то заданной кодировки - просто последовательность байтов. Поэтому тогда вам надо не text а bytea.
А вот чтобы что то искать внутри этого осознанное - надо знать кодировку (нельзя искать фразы в последовательности байтов не зная кодировки потому что одна и та же фраза в разных кодировках это разная последовательность байтов).
...
Рейтинг: 0 / 0
07.01.2016, 19:23
    #39143099
azsx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительно преобразовать строку в UTF8
решил http://wiki.freepascal.org/Theodp
зы
помогли, подсказали.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Принудительно преобразовать строку в UTF8 / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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