cocos2d-x-3.1 國際化strings.xml解決亂碼問題 (coco2d-x 學習筆記四)
阿新 • • 發佈:2017-05-07
source ron 文件 亂碼問題 resource -s type fileutil ani
xml解析代碼實現例如以下:
查看源代碼的時候也發現此方式用的是sax解析,所以讀者能夠不用操心效率及內存問題。
今天寫程序的時候發現輸出文字亂碼,盡管在實際開發中把字符串寫在代碼裏是不好的做法。可是有時候也是為了方便,遇到此問題第一時間在腦子裏面聯想到android下的strings.xml來做國際化。本文就僅僅針對解析xml來實現cocos2d-x的國際化解決亂碼問題。
尋找解決方法的時候在cocos2d-x的cpp-tests文件裏發現strings.xml,因此在事例源代碼中發現此方法。
為了方便,我直接將C:\cocos2d-x-3.1\tests\cpp-tests\Resources\fonts的strings.xml文件復制到自己的fonts目錄下。
strings.xml內容例如以下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>chinese1</key> <string>美好的一天</string> <key>japanese</key> <string>良い一日を</string> <key>russian</key> <string>Хорошего дня</string> <key>spanish</key> <string>Buen día</string> </dict> </plist>
xml解析代碼實現例如以下:
auto strings = FileUtils::getInstance()->getValueMapFromFile("fonts/strings.xml"); std::string chinese = strings["chinese1"].asString(); std::string russian = strings["russian"].asString(); std::string spanish = strings["spanish"].asString(); std::string japanese = strings["japanese"].asString();
查看源代碼的時候也發現此方式用的是sax解析,所以讀者能夠不用操心效率及內存問題。
cocos2d-x-3.1 國際化strings.xml解決亂碼問題 (coco2d-x 學習筆記四)