2012-10-15 14 views
9

मुझे जावा में शाब्दिक स्ट्रिंग के साथ एक वर्णसेट समस्या है।जावा शाब्दिक स्ट्रिंग: रनटाइम पर गलत वर्णमाला

जैसा कि आप नीचे दी गई छवि पर देख सकते हैं, मेरे पास एक स्थिर स्ट्रिंग निरंतर पैरामीटर "Título" के साथ TITULO नामक स्थिर वस्तु है। जब मैं प्रोग्राम चलाता हूं, तो इस स्ट्रिंग को "टीए-टुलो" के रूप में पढ़ा जाता है। मुझे नहीं पता क्यों।

Eclipse Debug View

मैं ग्रहण प्रोजेक्ट गुण विंडो और बिलाव सेटिंग्स पर वर्णसेट सेटिंग का पता लगाने, लेकिन उन सभी को UTF-8 एक विकल्प के रूप में साथ हैं।

मैं टॉमकैट 7, एक्लिप्स हेलीओस और विंडोज एसओ चला रहा हूं।

क्या कोई इस मुद्दे के साथ मेरी सहायता कर सकता है?

+0

लगता है कि कंसोल कुछ अन्य एन्कोडिंग, सीपी 1252 या लैटिन 1 पर सेट है। –

+0

"this.id = id" को "this.id = TITULO" के साथ बदलें। अब यह है .id में 7 अक्षर या 6. –

+0

@DanielFischer आवश्यक कंसोल नहीं है, लेकिन शायद सामान्य रूप से ग्रहण गलत वर्णमाला का उपयोग कर रहा है? क्या होता है यदि आप JVM को स्ट्रिंग के आकार को निर्धारित करते हैं? 'Int len ​​= id.length();' और देखें कि 'len' का मान डीबगर में क्या है। यह एक जेवीएम एन्कोडिंग मेल नहीं हो सकता है। जब आप डिबगिंग कर रहे हों तो यह जानकारी किसी सॉकेट पर स्थानांतरित हो जाती है, तो हो सकता है कि ग्रहण टॉमकैट की तुलना में एक अलग एन्कोडिंग का उपयोग करके इसे निर्धारित करने का प्रयास कर रहा हो? इसके अलावा, मेरे पास कोई सुराग नहीं है। : 3 – Brian

उत्तर

1

कोड ग्रहण संपादक में है कि में UTF-8 में बिलाव URIEncoding स्थापित करने की कोशिश कर सकते कोड है कि बिल्ला निष्पादित हो रहा है की एक ही नहीं है।

मुझे/.war फ़ाइल पर एक .war फ़ाइल मिली। मैंने इस युद्ध फ़ाइल को हटा दिया और काम करता है! टोमकैट इस पुरानी युद्ध फ़ाइल से कक्षाएं चला रहा था।

मैंने हाल ही में इस चलती ग्रहण परियोजना को एक मेवेन प्रोजेक्ट में परिवर्तित कर दिया है। मैंने इस प्रक्रिया में 'mvn पैकेज' निष्पादित किया होगा जिसने इस युद्ध फ़ाइल को बनाया है।

धन्यवाद सभी मदद के लिए मुझे यह समाधान मिला।

0

मुझे विश्वास है कि जिस स्ट्रिंग को आप देख रहे हैं (this.id) वास्तव में स्थिर स्थिर स्ट्रिंग Titulo नहीं है।

कहीं भी आपके कोड में, आप उचित यूनिकोड स्ट्रिंग टिटुलो पढ़ रहे हैं, इसे एक बाइट सरणी में परिवर्तित कर रहे हैं, फिर इसे वापस स्ट्रिंग में परिवर्तित कर और स्टाइल के कन्स्ट्रक्टर को पास कर रहे हैं। रूपांतरण के दौरान स्ट्रिंग दूषित हो रही है। तब तक और नहीं कह सकता जब तक आप उस कोड के स्टैक ट्रेस को नहीं दिखाते जहां आप स्टाइल के कन्स्ट्रक्टर को कॉल करते हैं।

+0

हां। @Brian सुझाव का परीक्षण करने के लिए मैंने अपना कोड बदलने के बाद, अब मुझे पता है कि संपादक पर मेरा कोड चल रहा कोड नहीं है। मैं इस खराब कोड की तलाश में हूं। –

1

आप server.xml

<Connector port="8090" URIEncoding="UTF-8"/> 
+0

मैंने कोशिश की। लेकिन काम नहीं करता है। नई जानकारी: मैंने अपनी ग्रहण परियोजना को एक मैवेन प्रोजेक्ट में बदल दिया है। मैं 'एमवीएन ग्रहण चला गया: स्वच्छ ग्रहण: ग्रहण' और ग्रहण पर परियोजना को फिर से लोड किया। मैंने इसके बाद ग्रहण परियोजना और टोमकैट वर्क निर्देशिका को साफ़ कर दिया है। मैं प्रोजेक्ट फ़ोल्डर से पुरानी/बिन निर्देशिका हटा देता हूं। अब, मुझे एहसास है कि टोमकैट एक पुराना कोड चला रहा है। मुझे यह पता होना चाहिए कि यह कोड कहां है ... –

+0

आम तौर पर, ग्रहण कोड को टॉमकैट पर यहां तैनात करता है: .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 – Zagrev

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