का एक बहुत मैं एक Oracle 10g डेटाबेस में निम्नलिखित "अनुवाद" तालिका:ओरेकल, UTF-8, NVARCHAR2, और भ्रम
ID VARCHAR2(100 BYTE)
LANGUAGE CHAR(2 BYTE)
COUNTRY CHAR(2 BYTE)
TRANSLATION NVARCHAR2(2000 CHAR)
TRACK_TIMESTAMP DATE
TRACK_USER VARCHAR2(2000 BYTE)
जब मैं यह करने के लिए प्रयास करें:
update translation set translation = 'œ' where id = 'MY_ID' And language = 'fr';
तब मैं इस चलाएँ:
select * from translation where id = 'MY_ID' and language = 'fr';
और अनुवाद स्तंभ दिखाता है: œ
के बजाय S
और मैं कोई विचार क्यों नहीं।
विरासत के मुद्दों के कारण मैं पूरे डेटाबेस को यूटीएफ -8 का उपयोग करने के लिए परिवर्तित नहीं कर सकता, क्या कोई अन्य विकल्प हैं?
वर्तमान में राष्ट्रीय चरित्र सेट AL16UTF16 है। सामान्य चरित्र सेट WE8ISO8859P1 है।
मैं वर्तमान में जावा 1.6
ऊपर उपयोग कर रहा हूँ एक सरल उदाहरण है।
UPDATE TRANSLATION SET TRANSLATION=? WHERE TRANSLATION.COUNTRY=? and TRANSLATION.ID=? and TRANSLATION.LANGUAGE=? 1=1,800 - 2,500 œufs par heure 2=CA 3=3_XT_FE_ECS18 4=fr
समस्या यहाँ बजाय œufs
जोड़ने आप हार्ड-कोडेड शाब्दिक बाँध चर के बजाय का उपयोग कर रहे चूंकि यह ¿ufs
डेटाबेस का राष्ट्रीय चरित्र सेट क्या है? क्या आप वाकई अद्यतन स्टेटमेंट जेनरेट कर रहे हैं जो हार्ड-कोडेड स्ट्रिंग अक्षर का उपयोग करते हैं? या आप बाध्य चर का उपयोग कर रहे हैं? यदि आप बाइंड वैरिएबल का उपयोग कर रहे हैं, तो यह एप्लिकेशन केवल VARCHAR2 की बजाय एनवीआरएआरएआर 2 के रूप में पारित होने वाले डेटा के डेटा प्रकार की पहचान करने वाला एप्लिकेशन है? –
AL16UTF16। सामान्य चरित्र सेट WE8ISO8859P1 है। नहीं, मैं अपडेट स्टेटमेंट्स नहीं बना रहा हूं जो हार्ड-कोडेड स्ट्रिंग अक्षर का उपयोग करते हैं। मैंने जितना संभव हो सके उदाहरण को सरल बनाने की कोशिश की। हम वर्तमान में एस 2 जे का उपयोग करते हैं और मैंने स्प्रिंग्स जेडीबीसी टेम्पलेट के साथ भी यह कोशिश की और '¿ufs' प्राप्त किया। मुझे यकीन नहीं है कि क्या s2j इसे nvarchar2 के रूप में पहचान रहा था, लेकिन यह एक स्ट्रिंग से ऑब्जेक्ट में अपना रिटर्न टाइप बदल गया, इसलिए मुझे लगता है कि यह इसे वर्चर 2 के रूप में नहीं मानता है। आपकी मदद के लिए धन्यवाद अगर मुझे कोई अन्य जानकारी याद आ रही है तो मुझे बताएं। – testing123