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

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

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

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

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

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

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

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

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


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