2011-09-10 17 views
7

का उपयोग करने के लिए सामग्री सर्वोत्तम सर्वोत्तम प्रथाओं को अंतर्राष्ट्रीयकृत करने के लिए वेबसाइट को उपयोगकर्ता द्वारा सबमिट की जाने वाली सामग्री को स्वीकार करने के लिए जो अंग्रेज़ी (जैसे जापानी) में नहीं हो सकता है और इसे डेटाबेस में सहेज सकता है, क्या यह utf8_encode में मेरी सबसे अच्छी रुचि है सभी नई सामग्री, और उपयोगकर्ता utf8_decode बाद में इसे पुनर्प्राप्त करते समय?utf8_encode() (php function)

आगे की जानकारी: मैं सिद्धांत का उपयोग कर रहा हूँ और मैं जब MySQL डेटाबेस को बचाने के लिए या यूनिकोड वर्ण का चयन करने के प्रयास करते हुए एक त्रुटियों हो रही है:

SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

+0

कृपया इसमें अपनी तालिका स्कीमा शामिल करें। और पूर्ण एसक्यूएल प्रदान करना संभव है? <- संकेत (तुलना अंक) – ajreal

+0

अधिक जानकारी की आवश्यकता है: आपकी तालिकाओं का उपयोग किस तालिका में किया जाता है? –

+0

[यूटीएफ -8 के माध्यम से सभी तरह से संभावित डुप्लिकेट] (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) – mercator

उत्तर

8

आप एनकोड समारोह उपयोग करने की आवश्यकता नहीं है। आपको क्या करना है यह सुनिश्चित करना है कि आप यूटीएफ 8 अंत तक खत्म हो जाएं। ऐसा लगता है कि डेटाबेस लैटिन 1 एन्कोडिंग और संयोजन का उपयोग कर सकता है। डेटाबेस से आपका कनेक्शन भी यूटीएफ 8 होना चाहिए। कभी-कभी कनेक्शन स्थापित करने के बाद बस सेट नाम यूटीएफ 8 क्वेरी निष्पादित करने का मामला।

mysql में यह आदेश चलाने से आप ऊपर दिखाई देने वाली त्रुटि को हल कर सकते हैं, लेकिन आपको अभी भी अंत तक यूटीएफ 8 होना चाहिए। फिर आपको अपने डेटा के साथ कुछ भी विशेष करने की आवश्यकता नहीं है।

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 
5

ब्रेंट सही है। इसे अंत तक होने की जरूरत है। यहां मेरी सूची है:

Apache config: 
    AddDefaultCharset UTF-8 
    AddCharset UTF-8 .utf8 

php.ini: 
    default_charset = "utf-8" 

MySQL: 
    ALTER DATABASE DEFAULT CHARACTER SET utf8; 
    ALTER TABLE SomeTableName DEFAULT CHARACTER SET utf8; 

PHP/HTML: 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    … 
    <form … <input type="text" name="some_field" value="<?php echo htmlspecialchars($row['some_field'], ENT_COMPAT, 'UTF-8'); ?>"… 

This last one seems the most important. Call this function immediately after the mysql_connect() call: 
    mysql_query("SET NAMES 'utf8'"); 
संबंधित मुद्दे