2013-02-20 21 views
6

मेरे पास एक पंजीकरण फ़ॉर्म था जो सदस्य तालिका में डालेगा, collation utf8_general_ci में है, और मैं php स्क्रिप्ट में SET NAMES utf8 का उपयोग करता हूं, ठीक है यहाँ समस्या है, मैं शुद्ध के अलावा एक स्ट्रिंग नहीं डाल सकता वर्णमाला, मैं एसक्यूएल क्वेरी चलाने के बाद, एक फॉर्म फ़ील्ड में 'हेलेन' इनपुट करने का प्रयास करता हूं, मैं अपनी डीबी तालिका के साथ जांच करता हूं, फ़ील्ड 'एच' के रूप में डाला जाता है, जब भी स्ट्रिंग विशेष वर्णमाला के साथ आती है तो बाकी वर्णमाला को सम्मिलित नहीं किया जा सकता जैसे é, ř पीछे।MySQL विशेष वर्ण डालें

क्या कोई मदद कर सकता है? धन्यवाद।

समाधान:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

mysql_query("SET NAMES utf8"); 

उपरोक्त दो लाइन महत्वपूर्ण हिस्सा एक वेबपेज पर डेटाबेस और उत्पादन में इनपुट स्वीकार करना है।

सलाह के लिए सभी को धन्यवाद।

+3

और एन्कोडिंग के बारे में पढ़ें इन दो महान ग्रंथों में उनकी हैंडलिंग और आप निश्चित रूप से समस्या मिलेगा: http://kunststube.net/frontback/ और http://kunststube.net/encoding/। –

+0

डीबी तालिका का एन्कोडिंग क्या है? सुनिश्चित करें कि यह utf-8 भी है। यह भी जांचें कि आपकी स्क्रिप्ट सही स्ट्रिंग प्राप्त करती है। डीबी में डालने से पहले फॉर्म डेटा को इको करें। (के बाद सत्यापन।) –

+0

देखो यहाँ समाधान [MySQL में सेट नाम UTF8?] [1] [1]: http://stackoverflow.com/questions/2159434/set-names-utf8-in- mysql – sanj

उत्तर

1

सुनिश्चित करें कि आप

CREATE SCHEMA `youdatabasename` DEFAULT CHARACTER SET utf8; 
+0

यह कोई जवाब नहीं है। –

+0

ओह ठीक है यह सुनिश्चित करने के लिए मैं उपयोग करता हूं कि मुझे एन्कोडिंग में परेशानी नहीं है :) इसके बजाय एक टिप्पणी होनी चाहिए? –

+0

यह सुनिश्चित करने के लिए पर्याप्त नहीं है। –

2

एन्कोडिंग के बाद डेटा डालने के लिए कोशिश एन्कोडिंग UTF8 के साथ अपने डेटाबेस बनाने के बनाओ। एन्कोड करने के लिए mysql_real_escape_string() आज़माएं। फिर सम्मिलित क्वेरी निष्पादित करें।

संपादित करें: -

इस उत्तर एक साल पहले तैनात थे। अब mysql_real_escape_string() PHP 5 के लिए mysqli :: real_escape_string इस प्रारूप में काम करेगा। जाँच कृपया here

1

और अगर आप नहीं है बहुत से अलग चारसेट codings के बारे में या htmlentities अगर चिंता करने की आप के लिए काम नहीं करता है चाहता हूँ, यहाँ विकल्प: मैं mysqli डीबी कनेक्शन (और PHPV5) लिखने के लिए फार्म के बाद इस्तेमाल किया/MySQL डीबी में डालने।

$Notes = $_POST['Notes']; //can be text input or textarea. 

$charset = mysqli_character_set_name($link); //only works for mysqli DB connection 
printf ("To check your character set but not necessary %s\n",$charset); 

$Notes = str_replace('"', '&quot;', $Notes); //double quotes for mailto: emails. 
$von = array("ä","ö","ü","ß","Ä","Ö","Ü"," ","é"); //to correct double whitepaces as well 
$zu = array("&auml;","&ouml;","&uuml;","&szlig;","&Auml;","&Ouml;","&Uuml;","&nbsp;","&#233;"); 
$Notes = str_replace($von, $zu, $Notes); 
echo " Notes:".$Notes."<br>" ; 
$Notes = mysqli_real_escape_string($link, $Notes); //for recommended mysqli DB connection. 
//$Notes = mysql_real_escape_string($Notes); //for old deprecated mysql DB connection. 

// mysqli_real_escape_string Escapes special characters in a string for use in an SQL statement 

echo " Notes:".$Notes ; //ready for inserting 
+0

सामग्री प्रदर्शित करते समय: और हास्यास्पद वर्ण दिखाई देने पर हेडर में यह पंक्ति दिखाई देती है। <मेटा http-equiv = "सामग्री-प्रकार" सामग्री = "टेक्स्ट/एचटीएमएल; charset = utf-8"> – KarlosFontana

+0

'mysqli_real_escape_string' होना चाहिए जब वहां एक पूरी तरह से अच्छी प्लेसहोल्डर प्रणाली होती है तब उपयोग किया जाता है। – tadman

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