2011-01-07 17 views
11

मैंने हमेशा आईएसओ -885 9 -1 एन्कोडिंग का उपयोग किया है, लेकिन अब मैं यूटीएफ -8 पर जा रहा हूं।यूटीएफ -8 समस्याएं PHP/MySQL

दुर्भाग्य से मैं इसे काम नहीं कर सकता।

मेरा MySQL डीबी यूटीएफ -8 है, मेरा PHP दस्तावेज़ यूटीएफ -8 में एन्कोड किया गया है, मैंने एक यूटीएफ -8 वर्णसेट सेट किया है, लेकिन यह अभी भी काम नहीं करता है।

(यह जैसे विशेष वर्ण है æ/ओ/एक वह काम नहीं करता)

आशा है कि आप लोग मदद कर सकते हैं!

+0

क्या आपके मेटा टैग यूटीएफ -8 के रूप में सेट हैं? –

+0

यहां कुछ goo utf-8 युक्तियां हैं और एन्कोडिंग समस्याओं के बारे में समाधान हैं: http://www.utf-8.de/index.php?area=tutorials –

+0

hmm वास्तव में उन वर्णों के बारे में क्या काम नहीं करता है? जो आप ऊपर पेस्ट करते हैं वह वैध utf8 है http://hexutf8.com/?q=c3a62fc3b82fc3a5 – jar

उत्तर

19

अपने डेटाबेस के लिए सुनिश्चित संबंध बनाने को भी इस वर्ण सेट का उपयोग किया जाता है:

$conn = mysql_connect($server, $username, $password); 
mysql_set_charset("UTF8", $conn); 

php.net पर mysql_set_charset के प्रलेखन के अनुसार:

Note: 
This is the preferred way to change the charset. Using mysql_query() to execute 
SET NAMES .. is not recommended. 

यह भी देखें:

echo mysql_client_encoding($conn); 

यह भी देखें:: http://nl3.php.net/manual/en/function.mysql-set-charset.php

के साथ अपने वर्तमान कनेक्शन के वर्ण सेट की जाँच करें http://nl3.php.net/manual/en/function.mysql-client-encoding.php

इन बातों को आप किया है, तो और अजीब वर्ण जोड़ने अपनी मेज पर, आप देखेंगे कि यह सही प्रदर्शित होता है।

+2

ध्यान दें कि PHP 5.5.0 के रूप में, 'mysql_set_charset' को बहिष्कृत किया गया है, http://php.net/manual/en/function.mysql-set-charset.php देखें। संदर्भ के लिए, पृष्ठ बताता है: ** चेतावनी यह एक्सटेंशन PHP 5.5.0 के रूप में बहिष्कृत है, और भविष्य में हटा दिया जाएगा। इसके बजाए, MySQLi या PDO_MySQL एक्सटेंशन का उपयोग किया जाना चाहिए। ** –

+0

mysqli_set_charset ($ con, "utf8"); ([w3school] (https://www.w3schools.com/php/func_mysqli_set_charset.asp)) – StinkyCat

9

यूटीएफ 8 में कनेक्शन एन्कोडिंग भी सेट करना याद रखें।

ext में \ mysqli कर $mysqli->set_charset("utf8")

ext में \ mysql कर mysql_set_charset("utf8")

अन्य db एक्सटेंशन के साथ

आप की तरह SET NAMES 'utf8'

Some more details about connection encoding in MySQL

दूसरों के रूप में क्वेरी चलाने के लिए हो सकता है इंगित करें, सुनिश्चित करें कि आपका स्रोत कोड utf-8 एन्कोडेड भी मदद करता है। बीओएम (बाइट ऑर्डर मार्क) नहीं होने पर विशेष ध्यान दें - किसी भी कोड को निष्पादित करने से पहले इसे ब्राउजर पर भेजा जाएगा, इसलिए हेडर या सत्र का उपयोग करना असंभव हो जाएगा।

1

क्या आपको यह त्रुटि है? MySQL चयन यूनियन संयोजनों का अवैध मिश्रण त्रुटि? बस आप utf 8 करने के लिए पूरे mysql सेट तो

SET character_set_connection = utf8; 
1

mysql को जोड़ने के बाद इस प्रयास करें:

mysql_query("SET NAMES 'utf8'"); 

और एनकोड UTF-8 में पीएचपी दस्तावेज़ बीओएम बिना।

2

बाद db से जोड़ने, चलाने क्वेरी सेट नाम UTF8

$db = new db(...); 
$db->query('set name utf8'); 

और जोड़ने के लिए इस टैग शीर्षक के लिए

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

यह http-surrogate कुछ भी मदद नहीं करता है। क्यों ** मूल ** HTTP शीर्षलेख नहीं भेजना है? –

1

मुझे एक ही समस्या थी लेकिन अब इसका हल हो गया है। यहाँ समाधान है:

1: उर तालिका ALTER तालिका tbl_name डिफ़ॉल्ट वर्ण सेट UTF8 मुक़ाबला utf8_general_ci अद्यतन;

2: एचटीएमएल कोड के सिर अनुभाग में इस जोड़ें:

सादर Saleha A.Latif

1

आजकल पीडीओ mysql उपयोग करने के लिए सिफारिश की तरीका है। इसके साथ आपको एन्कोडिंग सेट करने के लिए कनेक्शन स्ट्रिंग का उपयोग करना चाहिए। उदाहरण के लिए: "mysql: host = $ host; dbname = $ db; charset = utf8"

+0

यह है !!! धन्यवाद। – Kabkee

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