2011-05-20 126 views
1

使用此代码我坚持数据GAE商店 但当存储阿拉伯语的格式在商店成为?????GAE阿拉伯语支持

如何在GAE中支持persist阿拉伯文字?

代码:

PersistenceManager manager = PMF.get().getPersistenceManager(); 
    Category category = new Category(categoryName); 
    manager.makePersistent(category); 
    manager.refresh(category); 
    manager.close(); 
+0

出于好奇:为什么要调用refresh()? – Stefan 2011-05-20 22:01:26

+0

获得持久类别的ID – 2011-05-21 16:25:40

回答

1

它更可能是当你从一个表单提交,或使其为HTML,而不是当它被存储(或检索)文本已损坏。

作为一个快速测试,试试这个:

String test = "\u0627\u0644\u0633\u0644\u0627\u0645"; 
PersistenceManager manager = PMF.get().getPersistenceManager(); 
Category category = new Category(test); 
manager.makePersistent(category); 
manager.refresh(category); 
manager.close(); 

如果显示正常(السلام),那么问题出在输入上的方式进入申请处理方式。如果它仍然出现损坏,请尝试另一种检索类别名称的测试,并在您的应用程序中将其与原始值test进行比较。该测试可能是这个样子:

boolean okay = "\u0627\u0644\u0633\u0644\u0627\u0645".equals(category.getName()); 

日志(或显示器)的okay值。如果false,那么它确实是无法处理阿拉伯语的持久层。发布您的发现,一旦我们更确信问题出在哪里,我们将努力寻找解决方案。


更新: servlet引擎不能保证,如果你通过setHeader()将其设置为识别的字符编码。改为使用setContentType()方法或setCharacterEncoding()方法。

+0

使用测试后的持久名称?????? 并没有任何事发生 – 2011-05-21 16:33:31

+0

@ahmed Shoeib - 第二次测试呢?您是否检索了该类别并将其名称与原始字符串进行了比较? – erickson 2011-05-21 18:28:00

+0

在服务器端我打印categoryName 的值,我发现它是阿拉伯文 但是,当它添加到存储它的格式转换为? – 2011-05-21 21:33:38