2011-11-01 11 views
6

पर विशेष वर्णों को सहेजना मुझे वर्तमान में एक विशेष डेटाबेस (® ©) को एक MySQL डेटाबेस में सहेजने में समस्या है।माईएसQL डेटाबेस

स्थानीय स्टैक (मेरी विकास मशीन के लिए स्थानीय) पर ऑपरेशन सुचारू रूप से चलता है और फ्रंट-एंड में जो भी दर्ज किया जाता है, उसे अपेक्षित रूप से सहेजा जाता है।

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

यह समस्या एक और अलग प्रणाली से आती है जो एक ही डेटाबेस का उपयोग करती है और कोई बदलाव नहीं करता है, इसलिए बस ® के बजाय एक ® के रूप में दिखाई देता है।

मेरे भ्रम का कारण यह है कि ऐसा लगता है कि यह मेरे स्थानीय ढेर पर आवश्यक है लेकिन केंद्रीकृत सर्वर पर नहीं।

मैं विचारों की तलाश कर रहा हूं कि यह देखने के लिए कि मेरे स्थानीय की तुलना में सर्वर कॉन्फ़िगरेशन पर इसका कारण क्या हो सकता है।

अग्रिम मार्क

+0

जोड़ने के लिए सामने अंत PHP में लिखा है भूल के

<form action=\"testsubmit.php\" method=\"post\" accept-charset=\"latin1_swedish_ci\">
  • सेट चारसेट प्रपत्र टैग में चारसेट-स्वीकार करते हैं। – MarkJWiggins

  • +1

    जांचें कि PHP डिफ़ॉल्ट एन्कोडिंग, MySQL कनेक्शन एन्कोडिंग और MySQL तालिका और फ़ील्ड collation समान हैं। –

    +0

    +1 प्रणव अधिकांश चीजों को शामिल करता है - निश्चित रूप से इन्हें करने की आवश्यकता है। – therobyouknow

    उत्तर

    1

    धन्यवाद आप php कोड में डीबी चयन करने के बाद इस जोड़ें: यदि स्तंभ जहां आप पाठ की दुकान UTF8 एन्कोडिंग है

    mysql_query("set names 'utf8'"); 
    

    भी की जाँच करें।

    +0

    +1 @ सोएका मिरेसा, धन्यवाद। कुछ परिदृश्यों के लिए विचार करने योग्य मूल्य। हालांकि ओपी की मूल समस्या के लिए इसकी आवश्यकता नहीं हो सकती है क्योंकि मैं इसे पुन: पेश करने में सक्षम था और mysql_query ("सेट नाम 'utf8'") की आवश्यकता के बिना समाधान प्रदान करता था; लेकिन यह अन्य परिदृश्यों के लिए उपयोगी हो सकता है। एक बार फिर धन्यवाद। – therobyouknow

    2

    @ प्रणव होसांगाडी (धन्यवाद) एन्कोडिंग की स्थिरता की जांच के लिए तीन क्षेत्रों को शामिल करता है। निम्नलिखित समाधान उसमें जोड़ता है। कुछ परिदृश्यों के लिए @ सोसा मिर्सिया के उत्तर (धन्यवाद भी) पर विचार करने के लायक हो सकते हैं, जिससे यह उत्तर समस्या को ठीक नहीं करता है, हालांकि जब मैं आपकी समस्या का समाधान करने और समाधान करने में सक्षम था, तो इसकी आवश्यकता नहीं थी । @ प्रणव की सोच की रेखा इस समस्या के लिए सफल प्रतीत होती है क्योंकि यह एक विशेष व्यक्ति के बजाय हर जगह एक चरित्र सेट का उपयोग करने की स्थिरता के बारे में है।

    पाँच काम करने के लिए:

    1. डेटाबेस चारसेट सुनिश्चित करने और तालिकाओं भर एक ही चारसेट उपयोग करते हैं, उदाहरण के लिए, टिप्पणी के लिए phpmyadmin और नीचे

    2. उपयोग php हैडर उपयोग के लिए इस चारसेट में इस निरीक्षण() डेटाबेस चारसेट जैसे के साथ समारोह:

      header('Content-Type: text/html; charset=latin1_swedish_ci');
    3. डालने HTML शीर्षक जैसे में मेटा टैग:

      <meta http-equiv="content-type" 
      content="text/html;charset=latin1_swedish_ci">
    4. जोड़ने mysql कनेक्शन उदा .:

      $con = mysql_connect("localhost","test","test");  
      mysql_set_charset ("latin1_swedish_ci", $con); 
      
    +0

    एक अनोखी बात यह है कि उपरोक्त चरण 5, MySQL कनेक्शन सेट करने से, एक ही सर्वर पर कहीं और काम नहीं कर सकता है, "" वर्ण सेट लैटिन 1 प्रारंभ नहीं किया जा सकता है "त्रुटि संदेश देखा जा रहा है। यहां पर असंबंधित सॉफ़्टवेयर पर भी देखा गया है: http: //bugs.kde.org/226960 उस चर्चा में एक सुझाव है: क्या आप में से कोई एक/usr/share/mysql/charsets देख सकता है और रिपोर्ट कर सकता है कि 'latin1.xml' फ़ाइल है? इसे न डालने दें आप इस जवाब को बंद करते हैं हालांकि यह मेरे सेटअप की एक अलग idiosyncracy हो सकता है। – therobyouknow

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