2012-04-26 12 views
14

मेरी मेज चार सेट UTF8 है और यह मिलान है utf8.now मैं इस कोड है:utf 8 - PHP और MySQLi UTF8

$mysqli = new mysqli("localhost", "root", "", "Amoozeshgah"); 

      if (mysqli_connect_errno()) { 
        printf("Connect failed: %s\n", mysqli_connect_error()); 

      } 
      if (!$mysqli->set_charset("utf8")) { 
    printf("Error loading character set utf8: %s\n", $mysqli->error); 
} else { 
    printf("Current character set: %s\n", $mysqli->character_set_name()); 
} 
     mysql_set_charset('utf8'); 
      if ($stmt = $mysqli->prepare("SELECT About_Title FROM Tbl_About WHERE About_Id=?")) { 
       $city = 8; 

       /* bind parameters for markers */ 
       $stmt->bind_param("s", $city); 

       /* execute query */ 
       $stmt->execute(); 

       /* bind result variables */ 

        $result = $stmt->get_result(); 

      /* fetch value */ 
      while ($myrow = $result->fetch_assoc()) { 

     // use your $myrow array as you would with any other fetch 
     printf("%s is in district %s\n", $city, $myrow['About_Title']); 
     print("shod"); 

    } 

लेकिन बाहर डाल दिया है:

Current character set: utf8 8 is in district نتمنتشس shod 

मैं क्या कर सकते हैं कर? संपादित करें: मैं बदले गए:

if (!$mysqli->set_charset("utf8")) { 
     printf("Error loading character set utf8: %s\n", $mysqli->error); 
    } else { 
     printf("Current character set: %s\n", $mysqli->character_set_name()); 
    } 
      mysql_set_charset('utf8'); 

साथ
$mysqli->set_charset("utf8") 

लेकिन कोई फर्क नहीं।

+0

क्या आपका डेटाबेस/टेबल सेटअप kollation utf8 है? – tonymarschall

+0

@tonymarschall हाँ यह है। –

उत्तर

42

कृपया है कि किसी की मदद कर सकते हैं mysql_set_charset('utf8');$mysqli->set_charset("utf8") :-) के लिए

+0

मैंने इसे बदल दिया लेकिन कोई अंतर नहीं –

+2

क्या आपने अपने पेज हेडर में यूटीएफ 8 एन्कोडिंग का उपयोग किया है जहां यह आउटपुट आ रहा है। –

+0

धन्यवाद यह काम किया! –

14
or mysqli_set_charset($this->mysqli,"utf8"); 
mysqli_set_charset($conn,"utf8"); 
0

दिलचस्प परिदृश्य बदल दें। कोई तकनीकी विवरण/स्पष्टीकरण नहीं और इसके बजाय सही दिशा में केवल एक पुश/सुराग।

परिदृश्य: एक उपयोगकर्ता एक सफल/VERIFIED IPN पेपैल लेनदेन के आधार पर खाते के दूरदराज के स्वचालित निर्माण। Mysqli क्वेरी उपयोगकर्ता और usermeta डेटा बनाता है, लेकिन उस डेटा के मूल्य में छिपे स्वरूपण वर्ण होते हैं और प्रपत्र प्रसंस्करण में बुलाए गए डेटा के उपयोग को अमान्य कर देते हैं। किसी भी मौजूदा डीबी टेबल्स को बदलने/बदलने के बिना बहुत ही सरल समाधान। असल में यह सुनिश्चित करता है कि आपका डेटा केवल ASCII प्रिंट करने योग्य वर्ण है और यहां तक ​​कि $ mysqli-> set_charset ("utf8") का उपयोग कर रहा है; वास्तव में यह महत्वपूर्ण नहीं है क्योंकि आप संसाधित होने और "ASCII स्वच्छ" इनपुट करने के लिए अपना डेटा तैयार कर रहे हैं।

$create_ipn = $mysqli->prepare("INSERT INTO xxx_somewhere (some_ipn_parameter , email, domain, item) VALUES (?, ?, ?, ?)"); 
    $create_ipn->bind_param("ssss", $some_ipn_parameter, $email, $domain, $item); 

    $some_ipn_parameter = preg_replace('/[^\x01-\x7F]/', "", 'the_actual_ipn_data'); 
    $email = '[email protected]'; 
    $domain = ''; 
    $item = 'Test'; 
    $create_ipn->execute();   
0

जब डेटाबेस से डेटा प्राप्त करने में, आप केवल डेटा सही ढंग से मिलता है नहीं, लेकिन यह भी सही ढंग से पृष्ठों पर इसे दिखाने की जरूरत है, तो अपने पृष्ठ हेडर में UTF-8 एन्कोडिंग का उपयोग करके देखें:

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

<meta charset="utf-8">

कि रोहित कुमार चौधरी को अपनी समस्या और समाधान, धन्यवाद है।

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