|
|
|
Принудительно преобразовать строку в UTF8
|
|||
|---|---|---|---|
|
#18+
Получаю целиком в строку содержимое текстового файла. Эти файлы далеко не всегда созданы в utf8, возможны другие кодировки (в том числе арабы, китайцы и прочие). Какая кодировка в конкретном случае я не знаю. Мне надо записать эту переменную целиком в postgresql в поле text, который в формате utf8. Если в файле есть хоть один символ не utf8 - то postgres выводит исключение и не записывает запись. Так и пишет, такой то символ - не utf8. Нужен текст, так как потом буду по тексту искать фразы. Вопросы: 1. Как перед записью в базу преобразовать переменную в utf8, а затем вернуть как она была? 2. Если первое невозможно, то как принудительно преобразовать (исключить) все символы не utf8? 3. Может есть какой то иной более правильный способ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 15:14 |
|
||
|
Принудительно преобразовать строку в UTF8
|
|||
|---|---|---|---|
|
#18+
azsxПолучаю целиком в строку содержимое текстового файла. Эти файлы далеко не всегда созданы в utf8, возможны другие кодировки (в том числе арабы, китайцы и прочие). Какая кодировка в конкретном случае я не знаю. Мне надо записать эту переменную целиком в postgresql в поле text, который в формате utf8. Если в файле есть хоть один символ не utf8 - то postgres выводит исключение и не записывает запись. Так и пишет, такой то символ - не utf8. Нужен текст, так как потом буду по тексту искать фразы. Вопросы: 1. Как перед записью в базу преобразовать переменную в utf8, а затем вернуть как она была? 2. Если первое невозможно, то как принудительно преобразовать (исключить) все символы не utf8? 3. Может есть какой то иной более правильный способ? 1 - можно если в bytea а не в text писать но тогда не будет поиска по нему. 2 - Эта задача решается на уровне вашей программы а не базы. Так что разбирайтесь с используемым языком программирования. 3 - см ответ на 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 15:37 |
|
||
|
Принудительно преобразовать строку в UTF8
|
|||
|---|---|---|---|
|
#18+
авторможно если в bytea а не в text писать но тогда не будет поиска по нему. поиск нужен. авторЭта задача решается на уровне вашей программы а не базы. у меня lazarus (аналог делфи). Можно ли посмотреть пример хоть на каком нибудь языке программирования как решается моя задача? Так как пока я ваще решения понять не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 16:39 |
|
||
|
Принудительно преобразовать строку в UTF8
|
|||
|---|---|---|---|
|
#18+
azsxвозможны другие кодировки (в том числе арабы, китайцы и прочие). Какая кодировка в конкретном случае я не знаю Ваша задача в общем случае не решается, даже если к примеру Вам будут присылать файлы только в русских кодировках можно рассуждать только о некой вероятности распознавания кодировки почитайте Поэтому возможно только частное решение задачи ( с использованием дополнительных или специальных признаков ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 17:09 |
|
||
|
Принудительно преобразовать строку в UTF8
|
|||
|---|---|---|---|
|
#18+
авторПоэтому возможно только частное решение задачи ( с использованием дополнительных или специальных признаков ) что это за решения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 17:10 |
|
||
|
Принудительно преобразовать строку в UTF8
|
|||
|---|---|---|---|
|
#18+
azsxчто это за решения? Ну, например в каждом Вашем файле должна присутствовать некая фиксированная фраза(слово), тогда зная её бинарное представление в каждой из кодировок можно определить кодировку.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 18:52 |
|
||
|
Принудительно преобразовать строку в UTF8
|
|||
|---|---|---|---|
|
#18+
дело в том, что меня не интересует какая там кодировка. Мне надо просто загнать эти файлы в поле text. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 03:19 |
|
||
|
Принудительно преобразовать строку в UTF8
|
|||
|---|---|---|---|
|
#18+
azsx, если файл в себе не несёт мета-информацию, о том какую кодировку надо использовать, для интерпретации байт находящихся в этом самом файле, то остаётся только брут форс метод (пытатся интерпретировать набор байт под разными кодировками) и смотреть какая кодировка подойдёт. но брут форс, думаю, не будет 100% коректно опознавать, а значит будут факты порчи или даже утраты данных. вариант который вам предлагали более жизнеспособен. другой вариант решения задачи - бить по бошке тех, кто присылает файлы, чтоб они соблюдали договорённость о том, что файлы должны быть в UTF-8 кодировке (если такая договорённость имеет место быть). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 12:04 |
|
||
|
Принудительно преобразовать строку в UTF8
|
|||
|---|---|---|---|
|
#18+
azsxдело в том, что меня не интересует какая там кодировка. Мне надо просто загнать эти файлы в поле text. text без какой то заданной кодировки - просто последовательность байтов. Поэтому тогда вам надо не text а bytea. А вот чтобы что то искать внутри этого осознанное - надо знать кодировку (нельзя искать фразы в последовательности байтов не зная кодировки потому что одна и та же фраза в разных кодировках это разная последовательность байтов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 15:16 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39142746&tid=1997533]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 283ms |
| total: | 528ms |

| 0 / 0 |
