.tmxマップファイルを使用するiOS用のゲームを書いています。私はアプリケーション「Tiled」でマップを作成していて、iOSに到達する前のある時点で、Perlでマップを解析しています。
ファイルをストレートXMLとして保存するとき、perlがそれらを解析するのは簡単です。ただし、cocos2dは、ファイルがbase64でエンコードされていることを要求します。「Tiled」マップエディタは、このエンコーディングスキームでファイルを保存するのに問題はなく、iOSはそれらを問題なく読み取りますが、私のperlコードに問題があります。
何らかの理由で、perlの標準のMIME :: Base64 decode_base64()メソッドはここでマスタードをカットしていません-文字列をデコードすると、1つまたは2つのバイナリ文字が表示されます-ひし形のボックスなどに疑問符が表示されます。
また、TMXファイル形式のあいまいなドキュメントでは、base64エンコーディングの前または後に他のエンコーディングが行われていて、この問題を引き起こしている可能性があるかどうかが不明確になっています。エンコーダーのcppソースを調べたところ、Latin1への参照がたくさん見られましたが、何が起こっているのかを詳細に解読できませんでした。
MIME :: Base64を使用して独自のテストを実行し、テスト文字列をエンコードしてからデコードしようとすると、エンコードされたテキストがTMXファイルから出力されるテキストとは劇的に異なることに気付きました。たとえば、base64でエンコードされたテキストです。短い文字列のテキストは次のようになります。
aGVyZSBpcyBhIHNlbnRlbmNl
ただし、TMXファイルからのbase64でエンコードされたテキストは次のようになります。
9QAAAAABAAANAQAAGAEAAA==
そのような文字列をデコードするために他に何を試みる可能性があるかについての提案はありますか?