отображает ли google-приложение механизм unicode по-разному в StringProperty v StringListProperty objs?

У меня есть db.StringProperty () mRegion, который настроен на некоторый корейский текст. Я вижу в своей панели инструментов значение на корейском языке:

한국: 충청남도

Однако, когда я беру это поле и добавляю его в свойство списка строк (db.StringListProperty ()), я получаю что-то вроде этого:

\ ud55c \ uad6d: \ ucda9 \ uccad \ ub0a8 \ ub3c4

У меня возникают проблемы с отображением этого текста на моем клиенте, когда у меня появляется это значение свойства строкового списка для клиента, поэтому меня заставляет задуматься, что что-то не так на сервере, когда значение хранится (как я ожидал бы, это будет читаемым Корейский, как StringProperty).

Кто-нибудь знает, где я могу ошибиться в этом, или если этот второй экран просто нормален в объектах списка строк, и проблема, вероятно, на моем конце клиента?

Благодарю.

Обновление с более подробной информацией о проблемах: Мой клиент – приложение для iphone. В основном, я использую iPhone, чтобы получить информацию о местоположении gps пользователя, используя обратный геокодер api. Я отправляю это в приложение и сохраняю его. Эта часть, похоже, работает, потому что для Кореи я вижу корейских персонажей. Название региона получается, в общем, следующим образом:

region = self.request.get('region') entry.init(region) ... self.mRegion = region 

довольно просто (и он работает).

Когда он ломается, я получаю эти данные и отправляю их клиенту. Обобщить:

 query = db.GqlQuery("SELECT * FROM RegionData WHERE mLatitudeCenter >= :1 and mLatitudeCenter <= :2", latmin, latmax) for entry in query: output += entry.mRegion + ',' self.response.out.write(output) 

Когда я беру это и помещаю его в UILabel в клиенте, он искажен. Кроме того, когда я беру искаженное значение в клиенте и отправляю его обратно на сервер, чтобы искать регион, он терпит неудачу, поэтому я предлагаю, чтобы вместо отправки корейского текста, возможно, он передавал символы repr () или что-то еще. Если, как вы говорите, это всего лишь вопрос презентации, а не сами в себе данные, то, возможно, это связано с системным шрифтом, который я использую, чтобы попытаться отобразить эти данные? Я думал, что где-то мне не хватает правильного вызова для encode () или decode (), но не уверен.

One Solution collect form web for “отображает ли google-приложение механизм unicode по-разному в StringProperty v StringListProperty objs?”

Вполне возможно, что интерфейс администратора отображает два по-другому, да. В последнем случае он явно выполняет реферат, а в первом он просто печатает строку.

Интерфейс интерфейса администратора не влияет на то, как работает ваш код: как Strings, так и StringLists хранятся одинаково в хранилище данных и возвращаются в виде строк Unicode для вас, поскольку вы хотите иметь дело, как хотите.

Я настоятельно рекомендую прочитать этот пост Joel on Software о unicode . Короче говоря, вы имеете дело с двумя типами вещей: двоичными данными и символами юникода. Чтобы смутить вас, Python предоставляет эти строки как строки – «unicode strings» и «raw strings», соответственно, но вы должны рассматривать только первые строки как реальные строки.

Хранилище данных с его StringListProperty и StringProperty хранит и возвращает строки Unicode. Ваша структура также должна указывать строки Unicode и принимать строки Unicode, но некоторые плохо разработанные фреймворки этого не делают.

Что вам нужно сделать, это проверить, что вы используете строки Unicode везде, где вы имеете дело с текстом, который вы явно вызываете .encode (), чтобы преобразовать строку Unicode в необработанную строку и .decode (), чтобы преобразовать необработанную строку в unicode string и что кодировка символов в возвращаемом ответе установлена ​​правильно, и вы кодируете свои строки с использованием той же кодировки. Как вы это сделаете, это будет зависеть от вашей структуры.

Как только вы это сделаете, если у вас все еще есть проблемы, я бы предложил написать несколько простых модульных тестов: хранение данных в хранилище данных и их извлечение и управление им, а затем проверка их на то, что вы ожидаете, – чтобы определить, где проблема.

Python - лучший язык программирования в мире.