/ जब JQuery.AJAX PHP (utf-8 और ISO-8859 असंगतता) के लिए / दूषित वर्ण - php, jquery, ajax, ascii

भ्रष्ट वर्ण जब jQuery.AJAX PHP (utf-8 और ISO-8859 असंगतता) को भेजता है - php, jquery, ajax, ascii

मेरे पास एक जावास्क्रिप्ट / PHP स्क्रिप्ट है जो निम्नलिखित कार्य करती है:

Uses javascript to find text on a web-page.
Transmits the text using jQuery AJAX to a PHP page.
The PHP stores the text in a MySQL database.

परेशानी यह है, जब मैं देखता हूं कि डेटाबेस में क्या संग्रहीत किया गया है, तो कुछ गैर- ASCII वर्ण दूषित हैं।

मैंने समस्या का सरलीकरण किया है और यह जानने के लिए कि क्या चल रहा है, इसकी जांच करने के लिए प्रत्येक अक्षर के वर्ण कोड मुद्रित किए हैं।

उदाहरण के लिए: एक एकल पात्र, पाउंड स्टर्लिंग प्रतीक पर भेजें। जब मैं PHP में जांच करता हूं, तो जो प्राप्त हो रहा है वह वर्ण 0xC2 है जिसके बाद 0xA3 है (पूँजी A circumflex follwed by पाउंड स्टर्लिंग)। यानी पाउंड से पहले एक शानदार अतिरिक्त चरित्र मिल रहा है)।

मैंने ऐसी ही समस्याओं पर ध्यान दिया, जिन्होंने jQuery.ajax contentType आदि को सेट करने का सुझाव दिया, लेकिन इसमें से कोई भी मेरे लिए समझ में नहीं आया।

धन्यवाद

उत्तर:

उत्तर № 1 के लिए 1

लगता है जैसे तुम मिश्रित चरित्र सेट मिला है। utf-8, ISO-8859 वहाँ। PHP ने अपने दम पर एकल पाउंड चरित्र को दो में से जीत लिया, लेकिन अगर यह iso-8859 की अपेक्षा के लिए कहा गया है तो ब्राउज़र हो सकता है लेकिन इसके बजाय utf-8 भेजा जाता है। Â उसके लिए एक मृत जीव है।

मूल रूप से, सुनिश्चित करें कि आप प्रसंस्करण (डेटाबेस, PHP, html) के सभी चरणों में utf-8 का उपयोग कर रहे हैं और आमतौर पर चीजें बहुत बेहतर काम करेंगी।


जवाब के लिए 0 № 2

अंत में यह काम करने के लिए मिला।

समस्या यह है कि jQuery.ajax utf-8 का उपयोग करके सर्वर पर डेटा पहुंचाता है, लेकिन PHP iso-8859-1 की अपेक्षा करता है।

समाधान: PHP में utf8_decode फ़ंक्शन का उपयोग करके utf-8 को ISO में रूपांतरित करें, उदा।

$incomming = utf8_decode($_REQUEST("incomming"));

और जब आप ajax रिटर्न हैंडलर के लिए डेटा वापस भेजते हैं, तो utf-8 में वापस कन्वर्ट करने के लिए utf8_encode () का उपयोग करें।

अन्य चीजें जो काम करने लगती हैं, उनमें सर्वर से ट्रांसमिशन से पहले डेटा पर जावास्क्रिप्ट एस्केप () फ़ंक्शन का उपयोग करना और उसके बाद URLdecode () के साथ PHP में डेटा को अन-एस्केप करना शामिल है।

अन्य चीजें जो मैंने कोशिश की, लेकिन काम नहीं कर पाई:

मैंने iso-8859-1 में अजाक्स को संचारित करने की कोशिश की, इसलिएPHP के साथ संगत होगा: jquery.ajax सेटिंग्स में: contentType: "application / x-www-form-urlencoded; charset = iso-8859-1"। कोई असर नहीं हुआ।

मैंने PHP का उपयोग utf-8: शीर्ष लेख ("सामग्री-प्रकार: पाठ / html; चारसेट = utf-8") बनाने की कोशिश की। फिर से यह काम नहीं किया।