Механизм приложения Google текстовая проблема кодировки UTF-8 DataStore

Я создаю gwt приложение, которое хранит текст случайных веб-страниц в текстовом поле хранилища данных. Часто текст отформатирован UTF-8. Все файлы моего приложения хранятся как UTF-8 и когда я запускаю приложение на своей локальной машине, весь процесс хорошо работает. Текст UTF-8 хранится и восстановимый ftom как таковой локальная версия механизма приложения как UTF-8. Однако, когда я развертываю приложение на механизме приложения Google где-нибудь между тем, когда я храню текст и когда я получаю его, это больше не UTF-8, который заставляет символы неASCII быть отображенными как?.

Когда я просматриваю хранилище данных в appengine панели управления, все специальные символы появляются как? который приводит меня полагать, что это - проблема при записи в базу данных.

Кто-либо знает, как зафиксировать это?

Само приложение является немного большим. Вот некоторый псевдокод:

Text webPageText = new Text();

/*Some Code to store Text object on datastore
Specifically I'm using javax.jdo.PersistenceManager to do this.
Some Code to retrieve text from datastore. */

String retrievedText = webPageText.getValue();

Проблема состоит в том, что retrievedText возвращается с? вместо unicode символов.

Вот подобная проблема в Python, который я нашел: Попытка хранить данные Utf-8 в получении хранилища данных UnicodeEncodeError. Хотя мое приложение не получает ошибок.

К сожалению, я думаю, что строки Java являются значением по умолчанию utf-8, и я не могу найти код, который позволит мне объявить их явно как utf-8.

Править: Я теперь создал маленькое веб-приложение, которое берет в unicode тексте и хранит его в хранилище данных и затем получает его без проблем. Я все еще понятия не имею, где проблема находится в моем коде первоисточника, но я собираюсь изменить способ, которым мой код обрабатывает извлечение веб-страницы для соответствия малому приложению, которое я просто создал. Поблагодарите Вас все за свою справку.

5
задан Community 23 May 2017 в 10:29
поделиться

2 ответа

Я попытался преобразовать String в ByteArray, а затем сохранить его как blob-объект хранилища данных.

//Save String as Blob
Blob webPageText = new Blob(<STRING THAT CONTAINS UNICODE CHARACTERS>.getBytes());

//Retrieve Blob as String
String retrievedText = new String(webPageText.getBytes());

Сначала я думал, что это решило проблему, но по ошибке я протестировал его только на моем локальном сервере. Этот код все еще возвращается? вместо символов Юникода, что наводит меня на мысль, что проблема не в хранилище данных, а в передаче от движка приложения к клиенту.

1
ответ дан 14 December 2019 в 18:56
поделиться
0
ответ дан 14 December 2019 в 18:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: