2008-12-08 10 views
5

मैं एक पुराने क्लासिक एएसपी साइट पर काम कर रहा हूं, और एक ऐसा फॉर्म है जो उपयोगकर्ता को कुछ टेक्स्ट (मल्टीलाइन टेक्स्टबॉक्स में) दर्ज करने की अनुमति देता है, और यदि वे ® (ट्रेडमार्क पंजीकृत करें) जैसे एचटीएमएल चरित्र जोड़ते हैं तो यह सही तरीके से सम्मिलित करता है। लेकिन जब वे डेटा को संपादित करने के लिए जाते हैं, उसी फॉर्म का उपयोग करते हुए, अद्यतन पंजीकृत ट्रेडमार्क के सामने एक यादृच्छिक 'Â' (circumflex उच्चारण) जोड़ देगा। सामग्री प्रकार utf-8 है।क्लासिक एएसपी gremlims, जब भी एक एचटीएमएल विशेष चरित्र का उपयोग किया जाता है पाठ में डाला जाता है

कोई विचार?

किसी भी समय आप इसे देने के लिए धन्यवाद। यह मुझे पागल कर रहा है। -m

उत्तर

2

मुझे लगता है कि आप जिस संपादक का उपयोग कर रहे हैं वह यूटीएफ -8 के साथ काम नहीं करता है, और सबकुछ ASCII में परिवर्तित कर रहा है।

सरल उत्तर HTML पृष्ठों में विशेष वर्णों का उपयोग करना बंद करना है। कॉपीराइट प्रतीक © या © के रूप में लिखा जाना चाहिए।

+0

quibble क्षमा करें, लेकिन यह ASCII के रूप में पाठ नहीं पढ़ रहा है क्योंकि ASCII उच्चारण अक्षरों या कॉपीराइट प्रतीक का समर्थन नहीं करता है। इसे आईएसओ -885 9 -1 या विंडोज -1252 जैसे आठ-बिट एन्कोडिंग का उपयोग करना होगा। –

1

इस सटीक समस्या के साथ मेरे अनुभव से, मैंने पाया कि ये वर्ण बहुत ऊपर आ गए हैं क्योंकि 1) जब सामग्री दर्ज की गई थी (यानी स्पेनिश), और 2) उपयोगकर्ता गैर-अंग्रेज़ी वर्ण सेट (और कीबोर्ड) का उपयोग कर रहा था, सामग्री को यूटीएफ -8 में परिवर्तित नहीं किया गया था। आप सही ट्रैक पर हैं, शीर्षलेख में सामग्री प्रकार की जांच कर रहे हैं, लेकिन यदि आपको यह जारी रहता है, तो आपको वास्तव में कनवर्टर के माध्यम से सामग्री को भी चलाने की ज़रूरत है। क्लासिक एएसपी के साथ, इस समस्या ने मुझे कई घंटे पहले दर्द का घंटों का कारण बना दिया (मेरी इच्छा है कि मुझे अभी भी सहायता के लिए कोड तक पहुंच हो)।

0

® ® ऐसा लगता है कि यह यूटीएफ -8 के रूप में संग्रहीत है, लेकिन ASCII/ISO-8859-1/Windows-1252 के रूप में प्रदर्शित किया गया है। meta टैग का उपयोग यह सुनिश्चित करने के लिए पर्याप्त नहीं है कि आपका पृष्ठ यूटीएफ -8 के रूप में कार्य किया जा रहा है। आपको सामग्री-प्रकार HTTP शीर्षलेख में एन्कोडिंग सेट करने की भी आवश्यकता होगी। यह हेडर आमतौर पर कुछ सर्वर-व्यापी सेटिंग या प्रोग्रामेटिक रूप से सेट होता है।

मैं एएसपी पता नहीं है, लेकिन यह हो सकता है कि कैसे आपको लगता है कि शीर्ष लेख स्थापित करना चाहिए लगता है:

HtmlEncode UTF-8

और यह कुछ और जानकारी प्रदान कर सकते हैं:

http://technet.microsoft.com/en-us/library/bb742422.aspx#EBAA

हैं आपका डेटा किसी डेटाबेस में संग्रहीत होता है, आपको यह भी सुनिश्चित करना होगा कि डेटा या तो यूटीएफ -8 में संग्रहीत किया गया हो या इसे संग्रहीत और पुनर्प्राप्त करते समय परिवर्तित किया जाए।

11

मूलभूत समस्या फॉर्म पोस्ट पर Response.Codepage का प्रभाव है।

जब आप किसी क्लाइंट को एक फॉर्म भेजते हैं जो निर्दिष्ट करता है कि सामग्री यूटीएफ -8 के रूप में एन्कोड की गई है, तो ब्राउज़र यह मान लेगा कि फॉर्म पोस्ट की सामग्री को यूटीएफ -8 के रूप में एन्कोड किया जाना चाहिए।

अब कार्रवाई पेज कि पोस्ट प्राप्त करता होगा (कुछ जवाबी intuatively) Response.Codepage के मूल्य का उपयोग यह सूचित करने के लिए कैसे पोस्ट में पात्रों इनकोड। यह स्पष्ट नहीं है क्योंकि हम इसे भेजने वाले के एन्कोडिंग को परिभाषित करने के लिए प्रेषक का काम सोचते हैं। यह भी सोचने के लिए एक प्राकृतिक छलांग नहीं है कि हम अपनी प्रतिक्रिया में जो भेजना चाहते हैं उसके एन्कोडिंग के साथ एक संपत्ति को प्रारंभिक अनुरोध प्राप्त करने के तरीके के साथ कुछ भी करना होगा। इस मामले में यह करता है।

क्या हो रहा है आपका फॉर्म चरित्र के यूटीएफ -8 एन्कोडेड संस्करण को पोस्ट कर रहा है लेकिन प्राप्त पृष्ठ में इसका प्रतिक्रिया नहीं है।कोडपेज 65001 (यूटीएफ -8 कोडपेज) पर सेट है। यह शायद 1252 की तरह OEM कोडपेज सिस्टम पर सेट है। इसलिए चरित्र के लिए यूटीएफ -8 एन्कोडिंग को दो अलग-अलग वर्णों के रूप में व्याख्या किया जाता है।

मेरे एएसपी में से निपटने के अच्छे चरित्र के लिए सुझाव दिए गए हैं: -

  • सभी सहेजें UTF-8 के रूप में पृष्ठों
  • शामिल <% @ कोडपेज = 65001 सभी पृष्ठों के शीर्ष पर
  • <% शामिल करें Response.CharSet = "UTF-8"%> शीर्ष पर सभी पृष्ठ
  • स्टोर एक यूनिकोड फ़ील्ड प्रकार जैसे SQL सर्वर NVARCHAR प्रकार में डेटा पोस्ट किया गया।

यहां महत्वपूर्ण बात यह है कि इससे पहले कि आप किसी ASP पेज में प्रपत्र मूल्यों को पढ़ आप यह सुनिश्चित करें कि Response.Codepage एक कोडपेज प्रेषकों एन्कोडिंग से मेल खाती पर सेट है और यह स्वचालित रूप से नहीं होता है बनाने के लिए की जरूरत है।

+1

उपरोक्त बुलेट की सिफारिशें पूरी तरह से काम करती हैं। – trebormf

+0

मुझे यह भी कहना है कि ऊपर दिए गए बुलेट किए गए बिंदुओं ने मुझे बचाया है, जो जानता है कि बालों के नीचे जाने के कितने घंटे जिद्दी आत्म-घृणा के रास्ते से मस्तिष्क के रास्ते पर काम नहीं कर रहे हैं, यह जानने में सक्षम नहीं है कि ** ™ ** क्यों नहीं टिकेगा बचाया। मेरी पहली खोज ने इस समाधान को जन्म दिया। बहुत धन्यवाद। –

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