2011-09-02 20 views
15

के साथ मैं प्रतिक्रिया के रूप में jQuery, PHP और JSON का उपयोग कर एक निर्भर चयन स्क्रिप्ट विकसित कर रहा हूं।जेएसन विशेष वर्णों जैसे

सब कुछ फ्रेंच लोगों की तरह विशेष वर्ण का उपयोग कर के अलावा अच्छी तरह से चला जाता है (ई, ए, ई ...)

अगर मैं उन्हें की तरह पहले से सांकेतिक शब्दों में बदलना (& eacute;, & egrave;, & agrave;) (यहां मैं एम्पर्सेंड और बाकी शब्द के बीच रिक्त स्थान का उपयोग अपने प्रश्न में ऑटो एन्कोडिंग को रोकने के लिए कर रहा हूं) यह काम करता है लेकिन जब jquery के साथ प्रस्तुत किया जाता है तो पात्रों को परिवर्तित नहीं किया जाता है जो उन्हें दिखाना चाहिए (é ...), इसके बजाय वे के रूप में दिखाए जाते हैं (eacute;)

यदि मैं उन्हें लिखता हूं (é) और उन्हें पूर्व-एन्कोड न करें, तो इस सरणी प्रविष्टि में पूर्ण मान एन है ओटी दिखाया गया।

मुझे यहां क्या करना चाहिए?

धन्यवाद।

+1

आम तौर पर सामान entitize के बाद से jQuery आप के लिए यह करता है की आवश्यकता नहीं है पर मुझे जानकारी के लिए यहाँ देखें। – NullUserException

+1

@NullUserException: यह * नहीं * jQuery है जो "आपकी सामग्री को अधिकृत करता है"। यह भी बिल्कुल हकदार नहीं है। – Tomalak

+0

@ टोमालक हमम ... मैं '.text()' का जिक्र कर रहा हूं, जो कुछ वर्णों को उनके HTML इकाई समकक्षों में परिवर्तित करता है ('createTextNode()' – NullUserException

उत्तर

6

बस पहले anwser

क्या आप डेटाबेस का उपयोग करते हैं? यदि हां, तो सुनिश्चित करें कि डेटाबेस तालिका घोषित की गई है UFT8 HTML पृष्ठ कैसे घोषित किया जाता है? यूटीएफ -8 PHP स्क्रिप्ट फ़ाइल में स्ट्रिंग है? यदि हाँ, तो यह सुनिश्चित कर लें फ़ाइल एक UTF-8 फ़ाइल स्वरूप है

तुम भी utf8_encode (एचटीएमएल को भेजने के लिए) और utf8_decode (प्राप्त करने के लिए), लेकिन नहीं सही तरीके से

+0

अब यह काम किया :) धन्यवाद। – medk

7

यदि मैं उन्हें (é) लिखता हूं और उन्हें में पूर्ण मान पूर्व-एन्कोड नहीं करता है तो यह सरणी प्रविष्टि दिखाई नहीं दे रही है।

मुझे यहां क्या करना चाहिए?

JSON में आप HTML-encode मान नहीं करते हैं। आप उन्हें सचमुच भेज (ई) के सेट सेट सामग्री प्रकार सही ढंग से:

header('Content-Type: application/json; Charset=UTF-8'); 

एन्कोडिंग अपने डेटा ज़ाहिर है, में है घोषित।

+0

ठीक है मैंने फ़ाइल में json_encode() से पहले इस हेडर को जोड़ा है जो जेसन प्रतिक्रिया भेज देगा और दोनों तरीकों (é और eacute) को आजमाएगा लेकिन फिर भी वही समस्या – medk

+0

@medk: सबसे पहले: '& eacute' के साथ प्रयास करना बंद करें।आप यहां एचटीएमएल से काम नहीं कर रहे हैं, इसलिए इसमें आपकी समस्या * के साथ कुछ भी नहीं है *। क्या आपने अभी उस हेडर को अनमोडिफाइड करने का प्रयास किया है या आपने अपने डेटा के वास्तविक एन्कोडिंग का उपयोग किया है? – Tomalak

+0

हां मैंने स्पष्ट रूप से पृष्ठ के लिए फ़ायरफ़ॉक्स में एन्कोडिंग को एन्कोडिंग सेट किया है जो परिणाम दिखाता है और दो प्रकार (सामान्य और एन्कोडेड) वाले प्रतिक्रिया की कोशिश करता है, सामान्य कभी नहीं दिखाता है और पूर्व-एन्कोडेड शो जैसा होता है, इसलिए हमेशा एक ही समस्या – medk

2

यह मेरे लिए काम किया, उम्मीद है कि इस्तेमाल कर सकते हैं यह किसी भी अन्य मुद्दों के समान अनुभव करने के लिए काम करेगा।

$title = 'é'; 
$title = mb_convert_encoding($title, "UTF-8", "HTML-ENTITIES"); 

header('Content-Type: application/json; Charset="UTF-8"'); 
echo json_encode(array('title' => $title)); 

mb_convert_encoding समारोह एक मूल्य लेता है और UTF-8 में (इस मामले में) से बदल देता एचटीएमएल-इकाइयां।

समारोह http://php.net/manual/en/function.mb-convert-encoding.php

+0

आप रॉक !! एक PHP लाइब्रेरी का उपयोग कर MySQL utf.8 से फायरबेस में कनवर्ट करते समय मेरे लिए काम किया। –

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