2008-09-30 9 views
56

के लिए सबमिट करें मेरे पास एक पृष्ठ है जिसमें एक फॉर्म है। यह पृष्ठ सामग्री प्रकार टेक्स्ट/एचटीएमएल; charset = utf-8 के साथ परोसा जाता है। मुझे आईएसओ -885 9 -1 वर्ण एन्कोडिंग का उपयोग कर इस फॉर्म को सर्वर पर जमा करने की आवश्यकता है। क्या यह इंटरनेट एक्सप्लोरर के साथ संभव है?फॉर्म में वर्ण एन्कोडिंग सेट करना इंटरनेट एक्सप्लोरर

तत्व बनाने के लिए स्वीकृति-वर्णसेट विशेषता सेट करना, इस तरह, फ़ायरफ़ॉक्स, ओपेरा आदि के लिए काम करता है लेकिन आईई के लिए नहीं।

<form accept-charset="ISO-8859-1"> 
    ... 
</form> 

संपादित करें: यह फार्म सर्वर एक द्वारा बनाई गई है और सर्वर बी को सौंपी जाएगी मैं सर्वर बी पर कोई नियंत्रण नहीं

अगर मैं सर्वर एक सेट चारसेट आईएसओ 8859- के साथ सामग्री की सेवा के लिए 1 सबकुछ काम करता है, लेकिन मैं सर्वर ए के एन्कोडिंग में बदलाव किए बिना इस काम को बनाने का एक तरीका ढूंढ रहा हूं। मेरे पास एक और सवाल है about setting the encoding in server A.

उत्तर

0

मुझे पूरा यकीन है कि यह आईई के पुराने संस्करणों के साथ संभव नहीं होगा। accept-charset विशेषता से पहले, form तत्वों को निर्दिष्ट करने के लिए कोई तरीका नहीं था कि वे किस वर्ण एन्कोडिंग को स्वीकार करते हैं, और ब्राउजर जो कर सकता है, वह सबसे अच्छा है कि फॉर्म में किए गए पृष्ठ के एन्कोडिंग को लगता है।

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

0

ऐसा लगता है कि माइक्रोसॉफ्ट accept-charset जानता है, लेकिन उनके दस्तावेज़ नहीं बताता है जो संस्करण के लिए यह काम करने के लिए शुरू होता है ...
आप या तो है, जिसमें ब्राउज़र के संस्करण आपने इसका परीक्षण नहीं बताया।

0

मुझे याद है कि इंटरनेट एक्सप्लोरर भ्रमित हो जाता है अगर स्वीकृति-वर्णसेट एन्कोडिंग सामग्री-प्रकार शीर्षलेख में निर्दिष्ट एन्कोडिंग से मेल नहीं खाती है। आपके उदाहरण में, आप दावा करते हैं कि दस्तावेज़ यूटीएफ -8 के रूप में भेजा गया है, लेकिन फॉर्म आईएसओ -885 9 -1 में प्रस्तुत करना चाहता है। उनसे मिलान करने का प्रयास करें और देखें कि क्या आपकी समस्या हल हो जाती है।

+0

मुझे एक ही समस्या है। एप्लिकेशन utf-8 के रूप में प्रतिक्रिया प्रदान करता है और फ़ॉर्म में इसे स्वीकार-वर्णसेट = "utf-8" निर्दिष्ट किया गया है लेकिन IE8 के साथ यह गलत प्रारूप वाले मानों को पुनर्प्राप्त करता है। इंटरनेट एक्सप्लोरर के साथ फ़ॉर्म के साथ काम करने के लिए सबसे अच्छी कॉन्फ़िगरेशन क्या है? धन्यवाद। –

2

यदि आपके पास सर्वर पर कोई पहुंच है, तो इसकी प्रक्रिया को यूटीएफ -8 में परिवर्तित करें। गैर-यूटीएफ -8 रूपों को जमा करने की कला एक लंबी और खेदजनक कहानी है; यह document about forms and i18n ब्याज का हो सकता है। मैं समझता हूं कि आपको अंतर्राष्ट्रीय समर्थन की परवाह नहीं है; यह सुनिश्चित करने के लिए कि आप लैटिन -1 रहता है, आप हमेशा यूटीएफ -8 डेटा को एचटीएमएल इकाइयों में परिवर्तित कर सकते हैं।

+1

मुझे अंतरराष्ट्रीय समर्थन के बारे में बहुत कुछ परवाह है, और मैं अपना ऐप यूटीएफ -8 दुनिया में रखना चाहता हूं, लेकिन इस एकल पृष्ठ को बाहरी सर्वर पर आईएसओ -885 9 -1 में सबमिट करने की आवश्यकता है। –

6

ऐसा लगता है कि यह कम से कम IE (6 और 7) के वर्तमान संस्करणों के साथ नहीं किया जा सकता है।

आईई फॉर्म विशेषता स्वीकृति-वर्णसेट का समर्थन करता है, लेकिन केवल तभी इसका मान 'utf-8' है।

समाधान सर्वर ए को संशोधित करना है जिसमें फॉर्म के लिए एन्कोडिंग 'आईएसओ -885 9 -1' एन्कोडिंग का उत्पादन किया गया है।

एक इकाई है जो केवल घटित में चरित्र सर्वर अपनी पोस्टिंग (या किसी GET कर) स्वीकार करने के लिए सेट के साथ के रूप में एक छिपा इनपुट क्षेत्र सम्मिलित करें:

+2

आईई केवल 'बैकअप' के रूप में 'स्वीकृति-अक्षरसेट' का उपयोग करता है, जब यह पृष्ठ के अपने वर्णमाला में किसी फ़ील्ड को एन्कोड करने में विफल रहता है। 'स्वीकृति-अक्षरसेट' निर्दिष्ट करें और आप यह नहीं बता पाएंगे कि कौन सी एन्कोडिंग का उपयोग किया गया था। इसलिए, यह पूरी तरह से बेकार है; इसका कभी भी उपयोग नहीं किया जाना चाहिए। एकमात्र समाधान, वास्तव में, पृष्ठ (या iframe) के अक्षर को बदलने के लिए रूप है। – bobince

-2
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
36

इस के लिए एक सरल हैक नहीं है।

उदाहरण: प्रपत्र एक सर्वर ISO-8859-1 की सेवा पर स्थित है और फार्म के रूप में इस तरह UTF-8 डालने कुछ उम्मीद कर सर्वर से पोस्ट करेंगे, तो:

<input name="iehack" type="hidden" value="&#9760;" /> 

आईई तो होगा "पता लगाएँ" कि फ़ॉर्म में यूटीएफ -8 वर्ण होता है और जब आप पोस्ट करते हैं या प्राप्त करते हैं तो यूटीएफ -8 का उपयोग करें। अजीब, लेकिन यह काम करता है।

+6

यह विपरीत स्थिति के लिए काम नहीं करता प्रतीत होता है। किसी अन्य सर्वर पर एक आईएसएफ -8 पृष्ठ पर एक आईएसओ -885 9 -1 पृष्ठ पर एक फॉर्म पोस्ट करना। – MaxiWheat

+1

ठीक है, यह दूसरी तरफ काम नहीं करेगा। वेन आप "ÿ" जैसे कुछ निर्दिष्ट करते हैं जो आईएसओ -885 9 -1 वर्णमाला में "उच्चतम" चर है, यह स्पष्ट रूप से एक यूटीएफ -8 कोड भी है। तो, इसलिए आईई सोचता है कि यह यूटीएफ -8 है। तो यह केवल तब काम करता है जब लक्ष्य वर्णमाला में अधिक मात्रा में वर्ण होते हैं। – acme

+0

ने मेरी समस्या हल की जब IE8 और IE9 स्वीकार्य-वर्णसेट = 'utf-8' का सम्मान नहीं कर रहे थे, धन्यवाद! –

1

बस एक ही समस्या है और मेरे पास अपेक्षाकृत सरल समाधान है जिसके लिए पृष्ठ चरित्र एन्कोडिंग में किसी भी बदलाव की आवश्यकता नहीं है (जो गधे में दर्द है)।

उदाहरण के लिए, आपकी साइट utf-8 में है और आप आईएसओ -885 9 -1 में किसी साइट पर एक फॉर्म पोस्ट करना चाहते हैं। बस पोस्ट की कार्रवाई को अपनी साइट पर किसी पृष्ठ पर बदलें जो पोस्ट किए गए मानों को utf-8 से iso-8859-1 में परिवर्तित कर देगा।

इस

कुछ इस तरह के साथ php में आसानी से किया जा सकता है:

<?php 
$params = array(); 
foreach($_POST as $key=>$value) { 
    $params[] = $key."=".rawurlencode(utf8_decode($value)); 
} 
$params = implode("&",$params); 

//then you redirect to the final page in iso-8859-1 
?> 
+1

यह एक अच्छा विचार है, लेकिन यदि आप लॉगिन जानकारी जमा करने की कोशिश कर रहे हैं और कुकीज़ और सामान को संभालने की आवश्यकता है तो यह काफी मुश्किल हो सकता है। यह तब कर्ल के साथ किया जा सकता है, लेकिन यह काम करने के लिए वास्तव में दर्द है। – acme

5

मैं यहाँ एक ही समस्या मिल गया है। मेरे पास एक आईटीएफ -8 पृष्ठ है जो एक आईएसओ -885 9 -1 सर्वर पर पोस्ट करने की आवश्यकता है।

ऐसा लगता है कि आईई आईएसओ -885 9 -1 को संभाल नहीं सकता है। लेकिन यह आईएसओ -885 9- को संभाल सकता है।

<form accept-charset="ISO-8859-15"> 
    ... 
</form> 

तो यह मेरे लिए काम करता है, क्योंकि आईएसओ -885 9 -1 और आईएसओ -885 9-15 लगभग समान हैं।

+0

नहीं। यह मेरे लिए काम नहीं करता है। – hrzafer

+0

आईई 11 के लिए पुष्टि नहीं कर सकता ... – Beat

1

रूस प्रतीकों 'विंडोज़ -1251'

<form action="yourProcessPage.php" method="POST" accept-charset="utf-8"> 
<input name="string" value="string" /> 
... 
</form> 

जब बस में परिवर्तित करने के लिए स्ट्रिंग CP1251 के लिए

$string = $_POST['string']; 
$string = mb_convert_encoding($string, "CP1251", "UTF-8"); 
+1

हालांकि अपने आप में यह प्रश्न का उत्तर नहीं देता है, मुझे लगता है कि यह एक बेहतर समाधान है। आपको हमेशा यूटीएफ -8 के साथ काम करना चाहिए। यह कहा जा रहा है, यदि आप एक ऐसा फॉर्म बनाते हैं जो उस सर्वर पर भेजा जाता है जिस पर आपके पास नियंत्रण नहीं है, तो यह इस तरह से काम नहीं करेगा। –

30

सभ्य ब्राउज़रों के साथ:

<form accept-charset="ISO-8859-1" .... > 
IE के साथ

(किसी भी):

document.charset = 'ISO-8859-1'; // do this before submitting your non-utf8 <form>! 
+5

यह आईई समस्या को हल करने के लिए प्रतीत होता है (जब ब्राउज़र में जावास्क्रिप्ट सक्षम होता है), और आप 'form' टैग में विशेषता 'onsubmit =" document.charset =' ISO-8859-1 '' 'विशेषता का उपयोग करके इसे कार्यान्वित कर सकते हैं। । –

+0

'स्वीकार्य-वर्णसेट' हेडर का उपयोग सर्वर को बताने के लिए किया जाता है जो वर्णमाला प्रतिक्रिया के रूप में स्वीकार्य है (http://tools.ietf.org/html/rfc2616#section-14.2 देखें)। ऐसा लगता है कि सबमिट किए गए दस्तावेज़ के वर्णमाला को निर्दिष्ट करने का यह सही तरीका नहीं है। प्रति मानक, इसे सामग्री-प्रकार के लिए 'वर्णसेट' पैरामीटर के रूप में जोड़ा जाना चाहिए। यह सुनिश्चित नहीं है कि एचटीएमएल रूपों में इसे कैसे निर्दिष्ट किया जाए: \ – exhuma

+0

थोड़ा और खुदाई करने के बाद, मैं [enctype] (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form] में आया # attr-enctype) फॉर्म तत्व पर विशेषता। विवरण के बाद, यह और अधिक सही दिखता है। हालांकि अभी तक इसका परीक्षण नहीं किया है। – exhuma

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