Я пишу игру для iOS, которая использует файлы карт .tmx.Я создаю карты в приложении 'Tiled', а затем в какой-то момент, прежде чем они попадают в iOS, я анализирую их с помощью Perl.
Когда я сохраняю файлы в виде простого XML, это очень удобно для Perlразобрать их.Однако cocos2d настаивает на том, чтобы файлы были закодированы в base64.У редактора карт «Tiled» нет проблем с сохранением файлов с этой схемой кодирования, и iOS читает их очень хорошо, но это создает проблемы для моего кода perl.
По какой-то причине стандартный MIME :: Base64 decode_base64 () метод в Perl не вырезает здесь горчицу - когда я декодирую строки, я получаю один или два двоичных символа - вопросительные знаки в прямоугольниках и тому подобное.
И расплывчатая документация по формату файлов TMX делает неясным, существует ли какая-либо другая кодировка до или после кодировки base64, которая может вызывать эти проблемы.Я посмотрел на исходный код cpp для кодировщика и увидел множество ссылок на Latin1, но я не смог расшифровать, что происходит в деталях.
Я заметил это, когда попытался выполнить свои собственные тесты с MIME:: Base64, кодирование, а затем декодирование тестовой строки, закодированный текст выглядит резко отличным от того, что я вижу из файлов TMX - например, мой закодированный в base64 текст для короткой строки выглядит так:
aGVyZSBpcyBhIHNlbnRlbmNl
Но текст в кодировке base64, поступающий из файлов TMX, выглядит следующим образом:
9QAAAAABAAANAQAAGAEAAA==
Любые предложения о том, что еще я мог бы попробовать при попытках декодировать строку, похожую на эту?