5

मैं जावा एप्लिकेशन के लिए जीएई डेटास्टोर का उपयोग कर रहा हूं, और कुछ पाठ संग्रहीत कर रहा हूं जो कई भाषाओं में होगा। मेरी सर्वलेट में, मैं पहली बार, डेटा की दुकान में किसी भी डेटा है यह देखने के लिए जाँच कर रहा हूँ, और यदि नहीं, मैं कुछ, निम्न के समान बना रहा हूं:Google ऐप इंजन डेटास्टोर एन्कोडिंग?

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); 
} 

इस के बाद से JDO उपयोग कर रहा है, मैं लगता है कि मैं भी Lang वर्ग के प्रासंगिक भागों शामिल करना चाहिए:

@PersistenceCapable 
public class Lang { 
@PrimaryKey 
private String code; 
@Persistent 
private String name; 
@Persistent 
private int popularity; 
// getters & setters & constructors... 
} 

हालांकि, गैर- ASCII वर्ण मुझे दु: ख दे रहे हैं। मैंने अपनी ग्रहण परियोजना को डिफ़ॉल्ट सीपी 1252 के बजाय यूटीएफ -8 एन्कोडिंग का उपयोग करने के लिए सेट किया है, इसलिए मैं सोचता हूं मैं उस परिप्रेक्ष्य से ठीक हूं, लेकिन जब मैं अपने डेटा को देखने के लिए ऐप इंजन डेटा व्यूअर का उपयोग करता हूं, तो Español प्रविष्टि Espaà ± ol बन जाती है, और जब मैं इसे देखने के लिए उस पर क्लिक करता हूं, तो मुझे 500 सर्वर त्रुटि मिलती है। (दाएं से बाएं पाठ के साथ कुछ अन्य प्रविष्टियां हैं जो डेटा व्यूअर में भी दिखाई नहीं देती हैं, लेकिन एक समय में एक समस्या ...)

क्या मेरे पास कुछ खास है जो मैं कर सकता हूं कोड एन्कोडिंग सेट करने के लिए कोड, या जीएई को निर्दिष्ट करें कि जो डेटा मैं संग्रहीत कर रहा हूं वह यूटीएफ -8 है? या ग्रहण पक्ष पर समस्या है, और क्या मुझे जावा जावा कोड के साथ कुछ करना चाहिए?

+0

यह नहीं कि यह एक "समाधान" है, लेकिन यदि मैं डेटा व्यूअर का उपयोग करके मैन्युअल रूप से डेटा डालता हूं, तो यह ठीक से डाला जाता है, और मेरा सर्वलेट जो डाटास्टोर से डेटा खींचता है और लौटाता है, यह डेटा को ठीक करता है। यह मेरा समाधान बन सकता है; मुझे केवल प्रारंभिक लोड डेटा की आवश्यकता है, और इसके बाद इसे अपडेट नहीं किया जाएगा, इसलिए इसे मैन्युअल रूप से करना एक विकल्प है। हालांकि मैं जानना चाहता हूं कि कोडिंग समाधान क्यों काम नहीं कर रहा था ... – sernaferna

उत्तर

0

क्या आप वाकई अपने डेटा में कोई समस्या है? मुझे पहले भी इसी तरह के मुद्दों का सामना करना पड़ा लेकिन यह पता चला कि यह डेटा व्यूअर के पायथन संस्करण में एक समस्या है। मैं जावा में अपना डेटा ठीक कर सकता हूं।

+0

हाँ, मुझे यकीन है कि यह डेटा के साथ एक समस्या है। जब मैं डेटा व्यूअर मैन्युअल रूप से डेटा दर्ज करता हूं, तो मुझे डेटा टाइन दिखाई देता है, और मेरा ऐप जेएसओएन के माध्यम से भी डेटा को ठीक से प्राप्त करने में सक्षम है।लेकिन जब मैं जावा कोड के माध्यम से डेटा बना देता हूं, तो यह किसी भी तरह डेटाबेस के रास्ते पर घुमाया जाता है। – sernaferna

+0

हो सकता है कि आपकी स्ट्रिंग जावा में पहले ही गड़बड़ हो। कहें कि आपका संपादक यूटीएफ -8 में है लेकिन आपका सर्वर लैटिन -1 में है। आपको वह गड़बड़ वाला पाठ मिलेगा। –

0

मुझे कई महीने पहले एन्कोडिंग के साथ एक ही समस्या थी। तुम मेरे सूत्रों के एक बार देख ले सकते हैं, शायद यह मदद करेंगे: 1) http://code.google.com/p/vocrecaptor/source/browse/trunk/vocrecaptorweb/src/com/vocrecaptor/web/server/DictionaryServiceImpl.java

2) और वर्ग /com/vocrecaptor/web/server/servlet/AbstractServiceServlet.java

1

फिक्स्ड इसी अंक की स्थापना द्वारा utf-8 दोनों अनुरोध और प्रतिक्रिया एन्कोडिंग। डेटासंग्रह में संग्रहीत मान्य स्ट्रिंग में अनुरोध एन्कोडिंग परिणाम, इसके बिना के रूप में संग्रहीत मान जाएगा "???? ..."

अनुरोध:

: यदि आप अपाचे HTTP क्लाइंट का उपयोग करें, यह निम्नलिखित तरीके से किया जाता है

प्राप्त अनुरोध:

NameValuePair... params; 
... 
String url = urlBase + URLEncodedUtils.format(Arrays.asList(params), "UTF-8"); 
HttpGet httpGet = new HttpGet(url); 

पोस्ट अनुरोध:

NameValuePair... params; 
... 
HttpPost httpPost = new HttpPost(url); 
httpPost.setEntity(new UrlEncodedFormEntity(Arrays.asList(params), "UTF-8")); 

उत्तर: अगर आप HttpServlet में आपकी प्रतिक्रिया का निर्माण, यह एक निम्नलिखित तरीके से किया जाता है:

HttpServletResponse resp; 
... 
resp.setContentType("text/html; charset=utf-8"); 
0

मुझे पता है कि आपने पहले से ही अपनी ग्रहण परियोजना को यूटीएफ -8 टेक्स्ट एन्कोडिंग का उपयोग करने के लिए सेट कर दिया है। क्या आपने जावा फ़ाइल की टेक्स्ट एन्कॉन्डींग को दोबारा जांच लिया था जिसमें "Español" जैसी स्ट्रिंग है?

संबंधित मुद्दे