|
Вопрос # 6 457/ вопрос решён / |
|
Здравствуйте!
Пытаюсь распаковать файл русской локализации (ru.pak) к браузеру Opera. Структура запакованного файла мне не до конца известна, поэтому перекладывал правильный алгоритм преобразования по примеру написанному на .vbs. Скрипт работает правильно. Результатом является файл ru.unp. Где-то похоже упускаю правильность составления строк (ResultText: TStrings) байтами из потока (MS: TMemoryStream) в результате в выходном файле русские символы отображаются "иероглифами". Если возможно, подскажите где ошибаюсь? Спасибо.
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
 |
Вопрос задал: Сергей П. (статус: Посетитель)
Вопрос отправлен: 21 июля 2013, 14:07
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Всё путём, проверено.

 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 21 июля 2013, 18:02
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 22; последнее сообщение — 21 июля 2013, 19:35; участников в обсуждении: 2.
Страницы: [1] [2] [Следующая »]
|
min@y™ (статус: Доктор наук), 21 июля 2013, 14:28 [#1]:
Цитата (Сергей П.):
в результате в выходном файле русские символы отображаются "иероглифами". Если возможно, подскажите где ошибаюсь? Спасибо.
Ну, раз формулировка вопроса именно такая, то отвечу: ошибаешься ты в кодировке выходного файла. Подразумеваешь ANSI, а на самом деле это UTF-8.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Сергей П. (статус: Посетитель), 21 июля 2013, 14:38 [#2]:
min@y™, скорее всего основная часть вопроса в его первой части - "Где-то похоже упускаю правильность составления строк.."
Все ведь по дефолту на юникоде теперь. Скорее всего алгоритм заполнения байтами где-то неверно мною воспринят.
|
|
min@y™ (статус: Доктор наук), 21 июля 2013, 14:46 [#3]:
Цитата (Сергей П.):
Скорее всего алгоритм заполнения байтами где-то неверно мною воспринят.
После преобразования из pak-файла сохрани получившиеся данные в файл и покажи мне.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 21 июля 2013, 15:25 [#5]:
Ты не тот файл прислал, цтфры не совпадают. Как я буду сравнивать правильный и неправильный?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Сергей П. (статус: Посетитель), 21 июля 2013, 15:53 [#6]:
файл тот, говорю же, где-то что-то неправильно. я в данный момент пытаюсь ошибку найти, код меняется постоянно, поэтому уже и цифры не те. Сейчас попробую воссоздать тот код когда хоть цифры совпадали
|
|
Сергей П. (статус: Посетитель), 21 июля 2013, 16:21 [#8]:
есть подозрение, что TmpStr := TmpStr + Char(b);
Char отдает символ как-то по особенному, а не так как ожидаешь.
|
|
min@y™ (статус: Доктор наук), 21 июля 2013, 16:51 [#9]:
Мой тебе совет: возьми исходник на VBS и переведи его для начала не на паскаль, а на русский язык (алгоритм по-русски опиши), чтоб понять, что вообще там внутри делается. А уж потом можно и на паскале функцию писать по этому алгоритму.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 21 июля 2013, 16:52 [#10]:
Цитата (Сергей П.):
есть подозрение, что TmpStr := TmpStr + Char(b); Char отдает символ как-то по особенному, а не так как ожидаешь.
Сомневаешься - прогони под дебаггером и посмотри значения промежуточных переменных.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Сергей П. (статус: Посетитель), 21 июля 2013, 16:57 [#11]:
я вот смотрю и не понимаю откуда берется лишнее. первая строка - как надо, вторая - генерится программой
28 D0 BF D1 83 D1 81 D1 82 D0 BE 29
28 C3 90 C2 BF C3 91 C2 83 C3 91 C2 81 C3 91 C2 82 C3 90 C2 BE 29
|
|
Сергей П. (статус: Посетитель), 21 июля 2013, 16:57 [#12]:
если бы мог разобраться сам - не пришел бы сюда )
|
|
min@y™ (статус: Доктор наук), 21 июля 2013, 17:12 [#13]:
Цитата (Сергей П.):
я вот смотрю и не понимаю откуда берется лишнее. первая строка - как надо, вторая - генерится программой 28 D0 BF D1 83 D1 81 D1 82 D0 BE 29
28 C3 90 C2 BF C3 91 C2 83 C3 91 C2 81 C3 91 C2 82 C3 90 C2 BE 29
Ну, для начала попробуй в своей проге заменить string на AnsiString, а Char - на AnsiChar. Затем посмотри в отладчике значение TmpStr на строке
ResultText.Add(IntToStr(b0 + b1 * 256) + '="' + TmpStr + '"');
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Сергей П. (статус: Посетитель), 21 июля 2013, 17:24 [#14]:
Очень неожиданно. замена на анси помогла - по крайней мере файл на диске теперь читаемый. в мемо пока что иероглифы, но это не очень важно. странность в том, что разработчики строго подчеркивали, что файл локализации теперь должен быть обязательно в utf8. странно это всё.
|
|
min@y™ (статус: Доктор наук), 21 июля 2013, 17:32 [#15]:
дай полученный файл сюда, посмотрю.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Сергей П. (статус: Посетитель), 21 июля 2013, 17:41 [#16]:
он хоть и по содержимому правильный, но размер у него маленький. чую подвох, неправильно так просто поступать.
http://rghost.ru/47571035
|
|
Сергей П. (статус: Посетитель), 21 июля 2013, 17:43 [#17]:
хотя нет, размер вроде нормальный
|
|
Сергей П. (статус: Посетитель), 21 июля 2013, 18:22 [#18]:
спасибо за помощь
|
|
min@y™ (статус: Доктор наук), 21 июля 2013, 18:34 [#19]:
Цитата (Сергей П.):
спасибо за помощь
не вижу оценки 5. что-то у меня со зрением, наверное...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Сергей П. (статус: Посетитель), 21 июля 2013, 19:26 [#20]:
Где! где это надо нажать. Сейчас все сделаю...
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|