2015-05-29 4 views
9

पर कॉल करते समय क्या एन्कोडिंग का उपयोग किया जाता है मेरे ठंडे पृष्ठ पर मैं एक पीएल/एसक्यूएल प्रक्रिया कहता हूं। एचटीएमएल फॉर्म यूटीएफ -8 का उपयोग करके एन्कोड किया गया है, ऑरकल डीबी में एन्कोडिंग WE8ISO8859P1 है। तो नीचे i_value के मामले में किस प्रकार का रूपांतरण होता है?ओरेकल पीएल/एसक्यूएल प्रक्रिया

मुझे विशेष रूप से दिलचस्पी है कि एमएस वर्ड बाएं उद्धरण (जो यूटीएफ -8 में E28098 के रूप में एन्कोड किया गया है) में क्या होता है। जब मैं पीएल/एसक्यूएल में i_value डीकोड करता हूं तो यह 18 (हेक्स) बन जाता है। यह देखते हुए कि यह यू + 2018 है, यह कुछ समझ में आता है, लेकिन मुझे अभी भी आश्चर्य है कि क्यों 20 निगल लिया गया है।

<CFSTOREDPROC PROCEDURE = "my_schema.lib.write_field" datasource="#datasource#"> 
     <cfprocparam cfsqltype="CF_SQL_VARCHAR" variable="i_name" value="remark" type="In"> 
     <cfprocparam cfsqltype="CF_SQL_VARCHAR" variable="i_value" value="#Form.remark#" type="In"> 
</CFSTOREDPROC> 
+0

मैं एक सीएफ विशेषज्ञ नहीं हूं, इसलिए कोई जवाब नहीं, केवल एक टिप्पणी: ओरेकल डीबी से कनेक्ट होने पर प्रत्येक ग्राहक वातावरण (और आपका सीएफ आपके ओरेकल डीबी का ग्राहक है) एक एनएलएस_एलएएनजी एनवी का उपयोग करता है। ओरेकल डीबी कनेक्शन के लिए उपयोग किए जाने वाले क्लाइंट वर्णमाला को निर्धारित करने के लिए चर। तो, आपके ओरेकल डीबी पक्ष (WE8ISO8859P1) पर एक वर्णमाला स्थापित है, जो आपके एचटीएमएल पेज (यूटीएफ 8) में दूसरा है, जो आपके कोल्डफ्यूजन सर्वर पर तीसरा है, मुझे लगता है, और संभवतः, चौथाई सेट अप के लिए सेट किया गया है आपके सीएफ सर्वर में उपयोग में ओरेकल क्लाइंट। मुझे लगता है कि आपको उस विशेष विकल्प को ढूंढना होगा और इसे उदा। ENGLISH_AMERICA.AL32UTF8। – nop77svk

+0

एनएलएस_एलएएनजी चर, निश्चित रूप से, आपके ओरेकल डीबी कनेक्शन में किसी प्रकार के समर्पित पैरामीटर के लिए आदान-प्रदान किया जा सकता है। (ओडीपी.नेट ऐसा करता है, अगर मुझे सही याद है।) फिर भी, मेरी टिप्पणी लागू होती है - आपको उस डीबी कनेक्शन प्रॉपर्टी को ढूंढना होगा और इसे सेट अप करना होगा। – nop77svk

+0

@ nop77svk क्लाइंट एन्कोडिंग को जानने के बाद भी, मैं जानना चाहता हूं कि किस प्रकार का रूपांतरण होता है। मैंने देखा कि डीबी को भेजे जाने पर कुछ बाइट बस निगलने लगते हैं, उदा। बाएं एकल उद्धरण चिह्न (यूटीएफ -16 में 0x2018) डीबी में सिर्फ 0x18 बन जाता है। – Roland

उत्तर

0

कोल्डफ्यूजन जावा आधारित है इसलिए मुझे लगता है कि स्ट्रिंग वेरिएबल यूटीएफ -16 का उपयोग करके एन्कोड किए गए हैं।

UTF-16 (2 बाइट एन्कोडिंग) से 1 बाइट एन्कोडिंग (उदा। WE8ISO8859P1) पर जाने के बाद, जैसा कि मेरे उदाहरण में मामला है, एमएसबी को अनदेखा किया जाता है और केवल एलएसबी माना जाता है।

यह देखे गए व्यवहार की व्याख्या करेगा: मैंने देखा कि कुछ बाइट बस डीबी को भेजे जाने पर निगलने लगते हैं, उदा। left single quotation mark (यूटीएफ -16 में 0x2018) डीबी में सिर्फ 0x18 बन जाता है।

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