Buduję aplikację gwt, która przechowuje tekst losowych stron w polu tekstowym magazynu danych. Często tekst jest sformatowany w UTF-8. Wszystkie pliki mojej aplikacji są przechowywane jako UTF-8, a po uruchomieniu aplikacji na komputerze lokalnym cały proces działa poprawnie. Tekst UTF-8 jest przechowywany jako taki i można go pobrać w lokalnej wersji silnika aplikacji jako UTF-8. Jednak kiedy wdrażam aplikację do silnika aplikacji Google gdzieś pomiędzy kiedy przechowuję tekst i kiedy go odzyskaję, to nie jest już UTF-8, który powoduje, że znaki spoza ASC są wyświetlane jako?.Google App Engine DataStore Tekst Kodowanie UTF-8 Problem
Kiedy wyświetlam datastore w panelu sterowania appengine, wszystkie znaki specjalne są wyświetlane jako? co prowadzi mnie do przekonania, że jest to problem przy pisaniu do bazy danych.
Czy ktoś wie, jak to naprawić?
Sama aplikacja jest trochę za duża. Oto niektóre Pseudokod:
Text webPageText = new Text(<STRING THAT CONTAINS UNICODE CHARACTERS>);
/*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();
Problemem jest to, że retrievedText wraca z? zamiast znaków Unicode.
Oto podobny problem w python, który znalazłem: Trying to store Utf-8 data in datastore getting UnicodeEncodeError. Chociaż moja aplikacja nie otrzymuje żadnych błędów.
Niestety uważam, że łańcuchy Java są domyślnymi utf-8 i nie mogę znaleźć żadnego kodu, który pozwoli mi zadeklarować je jawnie jako utf-8.
Edytuj: Zbudowałem małą aplikację webową, która pobiera tekst w unicode i zapisuje go w magazynie danych, a następnie pobiera go bez żadnych problemów. Wciąż nie mam pojęcia, gdzie jest problem z moim oryginalnym kodem źródłowym, ale zamierzam zmienić sposób, w jaki mój kod obsługuje pobieranie stron internetowych w celu dopasowania do mniejszej aplikacji, którą właśnie zbudowałem. Dziękuję wszystkim za waszą pomoc.
Czy możesz opublikować odpowiednie fragmenty kodu? –
Mówisz, że uważasz, że problem dotyczy przechowywania i pobierania, a następnie nie podawaj kodu, którego używasz do przechowywania i pobierania danych! Potrzebujemy odpowiedniego kodu, jeśli w ogóle mamy pomóc. –
Źródło całego projektu znajduje się powyżej. Za kilka godzin postaram się zrobić małą wersję, która powiela problem. –