Tôi đang sử dụng kho dữ liệu GAE cho một ứng dụng Java và lưu trữ một số văn bản sẽ có nhiều ngôn ngữ. Trong servlet của tôi, tôi lần đầu tiên kiểm tra để xem nếu có bất kỳ dữ liệu trong lưu trữ dữ liệu, và nếu không, tôi là tạo ra một số người, tương tự như sau:Mã hóa dữ liệu của Google App Engine?
ArrayList<Lang> list = new ArrayList<Lang>();
list.add(new Lang("EN", "English", 1));
list.add(new Lang("ES", "Español", 0));
//more languages here...
PersistenceManager pm = PMF.get().getPersistenceManager();
for(Lang l : list) {
pm.makePersistent(l);
}
Vì đây là sử dụng JDO, tôi tôi cũng nên bao gồm các phần có liên quan của lớp học Lang
:
@PersistenceCapable
public class Lang {
@PrimaryKey
private String code;
@Persistent
private String name;
@Persistent
private int popularity;
// getters & setters & constructors...
}
Tuy nhiên, các ký tự không phải ASCII khiến tôi đau buồn. Tôi đã thiết lập dự án Eclipse của tôi để sử dụng mã hóa UTF-8 thay vì Cp1252 mặc định, vì vậy tôi nghĩ rằng Tôi không quan tâm đến quan điểm đó, nhưng khi tôi sử dụng Trình xem dữ liệu của App Engine để xem dữ liệu của tôi, đó là Español mục nhập trở thành Espaà ± ol, và khi tôi nhấp vào nó để xem nó, tôi nhận được một lỗi máy chủ 500. (Có một số mục khác có văn bản từ phải sang trái thậm chí không hiển thị trong Trình xem dữ liệu, nhưng một vấn đề tại một thời điểm ...)
Có điều gì đặc biệt tôi có thể làm trong mã để đặt mã hóa ký tự hoặc chỉ định GAE rằng dữ liệu tôi đang lưu trữ là UTF-8? Hoặc là vấn đề ở phía Eclipse, và có điều gì tôi nên làm với mã Java của tôi không?
Không phải là "giải pháp", nhưng nếu tôi chèn dữ liệu theo cách thủ công, sử dụng Trình xem dữ liệu, nó được chèn vào và servlet của tôi lấy dữ liệu từ kho dữ liệu và trả về nó cũng trả về dữ liệu. Điều này có thể trở thành giải pháp của tôi; Tôi chỉ cần tải ban đầu của dữ liệu được thực hiện, và sau đó nó sẽ không được cập nhật, do đó, làm nó theo cách thủ công là một lựa chọn. Mặc dù tôi muốn biết tại sao giải pháp mã hóa không hoạt động ... – sernaferna