![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
lollollollol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
Здравствуйте, ситуация такая:
На сервер был скачен текстовый файл с русским текстом, на сервере нет русского языка, и файл сохранился с текстом типа "Õîòèòå ïîõóäåòü", когда я скачал файл на мой комп, все символы такими и остались. Вопрос: Как из этого файла получить снова русский текст? Работа с файлам будет выполняться программно, спасибо Добавлено через 10 минут и 16 секунд Utf8ToAnsi не работает |
|||
|
||||
lollollollol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
ЧТо же это за кодировка, немогу ничего найти уже 4 часа!!!!!!!!!!!
Уже весь гугл и яндекс перелопатил! Это сообщение отредактировал(а) lollollollol - 16.1.2014, 00:08 |
|||
|
||||
ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
На сервере есть такая проблема, обычно на сервере это тупо ansi.
Хочешь что быбработало, используй unicode, точнее utf16le |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
или ссылку на сайт или файл в бинарном виде... походу одна из видов кириликов ....
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
http://2cyr.com/decode/?lang=ru => Хотите похудеть
-------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
lollollollol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
ну да, я понял что это ansi, только не понял как из этого программно получить нормальный русский текст?
Ну например открываю файл, читаю строку, строка в переменной
Как получить русский текст? Из какой в какую кодировку кодировать? Или может как0то посимвольно обрабатывать? Добавлено через 4 минуты и 30 секунд Расширенный режим: исходная кодировка: windows-1251 отображается как: windows-1251 т.е. получается оно просто windows-1251 кодирует в windows-1251 но на выходе заветные символы, как программно в делфи того же добиться? |
|||
|
||||
lollollollol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
Ничего не выходит, уже и всё из HtmlCPConvert перепробовал, и все примеры в гугле которе нашел.
Я совсем не понимаю что требуется сделать чтобы вернуть в русский текст? Это же обычная windows1251, почему она так отображается? |
|||
|
||||
lollollollol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
а вот так текст в винхексе выглядит
|
|||
|
||||
ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
У тебя не кодировка не читается, у тебя контролы не читают ansi в windows server. Такое бывает.
Поэтому юзай UNICODE, т.е. записывай в нем и читай его |
|||
|
||||
Alexiski |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 12.12.2008 Репутация: нет Всего: 1 |
Есть веоятность, что текст в 1251 был ошибочно воспринят как Latin-1 и уже в таком виде преобразовался в Unicode (Utf-8). То есть его нужно обратно в Latin-1, а потом уже прочитать как 1251. Как-то так..
|
|||
|
||||
lollollollol |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
Вот есть у меня гигобайты таких файлов, как теперь в русский текст вернуть их? какие функции использовать для преобразования в русский текст? Нашел статью, http://habrahabr.ru/post/137061/ села как там сказано
Не спасло абсолютно! Добавлено через 2 минуты и 2 секунды
Даёт результат
|
||||||||
|
|||||||||
lollollollol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
У меня delphi 7 и нет этой функции, кто может скопировать у себя код этой функции и показать тут? Это сообщение отредактировал(а) lollollollol - 17.1.2014, 11:24 |
|||
|
||||
lollollollol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
![]() |
|||
|
||||
lollollollol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
Задача вообще решаема?
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
да
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
lollollollol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
и в какую сторону копать?
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
что бы подсказать в какую сторону копать, надо видеть что именно копать.. надо видеть не только то что вы копируете с разных мест , а первоисточник!!! вы же , просто сообщаете что у вас ничего не получилось... все ф-ции даны по работе с текстом, надо только из них создать правильную комбинацию...
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
lollollollol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
Извиняюсь, мой косяк, вот первоисточник.
Вопрос, каким алгоритмом вернуть русский текст? Присоединённый файл ( Кол-во скачиваний: 9 ) ![]() |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
этот файл ни в каком виде не похож на русский.... по наличию пробела в файле можно подумать что это utf8 , но не русский....
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
lollollollol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
Ну дак я и говорю, русский файл был скачен на сервер, который не поддерживает русский язык. И в результате неведамым мне образом так сохранён.
Как теперь его в русский вернуть? |
|||
|
||||
ФедосеевПавел |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 1 Всего: 10 |
lollollollol, за 4 дня пора бы уже ознакомиться с кодировками, основами unicode.
Твой файл 3.txt при открытии в режиме просмотра hex - выглядит так:
Первые три байта EF BB BF напоминают BOM. Значит, открываем файл как utf-8, видим строку
Это уже можно принимать за искажённую строку. Выполнив несколько экспериментов по изучению перечня возможных кодировок на сервере (источнике данных - твоих файлов) при помощи сайта из поста Illusion Dolphin, можно понять, что в данном случае имеет место кодировка сохранения iso8859-15 (latin-9), читаемая нашими вьюверами как cp1251 (ansi). Итак, чтобы получить из фразы "Хотите похудеть" в кодировке cp1251 файл 3.txt, нужно взять строку в кодировке cp1251 и провести преобразование iso8859-15 -> utf-8, т.е. ошибиться с кодировкой. И сохранить файл с BOM. Обратное преобразование utf8 -> iso888859-15, и полученную строку с однобайтной кодировкой интерпретировать как строку в cp1251. О готовых библиотеках для преобразования я ничего не знаю, т.к. ещё не приходилось заниматься, но можно их или поискать или выполнить самостоятельно - все таблицы кодировок опубликованы, например, iso8859 в Wikipedia. По большому счету, из проблем - автоматический выбор таблицы кодировки. Думаю, что она решается или вопросом к пользователю с показом промежуточных результатов, или проверкой диапазона символов из файла диапазону символов в кадждой таблице. Не сбрасывай со счетов алгоритм на хабре, ссылку на который привел Akella. Может быть уже существуют готовые решения. |
||||
|
|||||
ФедосеевПавел |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 1 Всего: 10 |
Есть официальный документ от Emarcadero - "Unicode_Delphi-RUS.pdf". Поищи его в сети.
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
сильно искаженный вариант... вот что зашифровано "Х о т и т е п о х у д е т ь "
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
lollollollol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
ФедосеевПавел, спасибо, подскажи
Как это можно сделать? Это сообщение отредактировал(а) lollollollol - 18.1.2014, 18:51 |
|||
|
||||
ФедосеевПавел |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 1 Всего: 10 |
Повторюсь, я не знаю - т.к. нужда ещё не заставляла.
Полагаю, что есть готовые решения с кодировками. Тем более в Delphi. А если вручную, то как-то так: составить свою таблицу соответствия символа в utf8 символу в кодовой таблице и потом заменять (учитывая, что каждый символ в utf8 может иметь размер от 1 до 6 байт). Для самостоятельной работы можешь почитать 1, 2, 3, BOM, iso8859, cp1251, utf8, "Unicode_Delphi-RUS.pdf", utf8tools+примеры, Google и Yandex (Delphi+utf8+iso8859). P.S. По поводу кодировки iso888859-15 я, конечно же, ошибся. Там iso888859-1. |
|||
|
||||
ФедосеевПавел |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 1 Всего: 10 |
Посмотри сюда.
|
|||
|
||||
lollollollol |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
Гениально!
Рабочий код, может кому пригодится!!!
Используем так:
Спасибо огромное всем кто откликнулся!!!!! Добавлено через 11 минут и 4 секунды Ещё вопрос по теме: Если выполнить эту функцию на сервере где нет русского языка, преобразование будет выполнено верно? |
||||
|
|||||
ZBugz |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Ну это тебе проще проверить. напиши проект пустой с этой функцией и проверь ![]() А вообще бы раньше бы написал бы, что у тебя делфи 7. С ней там как раз надо работать через такие вот примеры свыше. Добавлено через 4 минуты и 45 секунд Я еще такое юзал как то давно (по названию функции понятно):
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |