मैं Codeigniter उपयोग कर रहा हूँ इतने लंबे समय के लिए नहीं किए गए वर्णसेट लेकिन मैं कुछ चारसेट समस्याओं है .. मैं चारों ओर सीआई फोरम में पूछ रहा हूँ, लेकिन मैं आगे, अभी भी कोई वैश्विक समाधान जाना चाहता हूँ: http://codeigniter.com/forums/viewthread/204409/Codeigniter और
समस्या डेटाबेस त्रुटि 1064 थी। मुझे समाधान मिला है, iconv का उपयोग करें! ठीक काम करता है, लेकिन मुझे लगता है कि यह जरूरी नहीं है। मैं charset के आदि के लिए इंटरनेट पर बहुत कुछ खोज रहा हूं लेकिन मैं अब सीआई का उपयोग कर रहा हूं, कैसे charsets और सीआई के बारे में ...
तो मुझे इसके बारे में बहुत सारे सवाल हैं, मुझे उम्मीद है कि कोई इसे स्पष्ट कर सकता है मेरे लिए:
वर्णमाला वैश्विक सेट करने का सबसे अच्छा तरीका क्या है? और क्या सेट करना है?
सिर में
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
config में/config.php
$config['charset'] = 'UTF-8';
config में/database.php
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
.htaccess में, मेरा पुनर्लेखन नियमों और
php_value magic_quotes_gpc Off
AddDefaultCharset UTF-8
इसके अलावा एक हैडर भेजने की ज़रूरत है? कहां रखना है? कुछ इस तरह?
header('Content-Type: text/html; charset=UTF-8');
अपने संपादक (Notepad ++) UTF-8 के रूप में फाइल को बचाने में? या यूटीएफ -8 (बीओएम के बिना)? या एएनएसआई अच्छा है (यही वह है जो मैं अब उपयोग कर रहा हूं)?
MySQL डेटाबेस के लिए utf8_unicode_ci या utf8_general_ci का उपयोग करें? और क्यों?
आरएसएस फ़ीड पढ़ने के बारे में, एकाधिक वर्णमाला को कैसे संभालें? जहां मैं काम कर रहा हूं, मेरे पास दो फीड हैं, एक यूटीएफ -8 एन्कोडिंग वाला और दूसरा आईएसओ -885 9 -1 के साथ। यह डेटाबेस में संग्रहीत किया जाएगा और कभी-कभी यह देखने के लिए तुलना की जाएगी कि क्या नए आइटम हैं या नहीं। यह विशेष वर्णों में विफल रहता है।
मैं के साथ काम कर रहा हूँ: - सीआई 2.0.3 - पीएचपी 5.2.17 - MySQL 5.1।58
अधिक जानकारी कहा:
मॉडल:
function update_favorite($data)
{
$this->db->where('id', $data['id']);
$this->db->where('user_id', $data['user_id']);
$this->db->update('favorites', $data);
return;
}
नियंत्रक:
$this->favorites_model->update_favorite(array(
'id' => $id,
'rss_last' => $rss_last,
'user_id' => $this->session->userdata('user_id')
));
जब $ rss_last की तरह एक "सामान्य" मूल्य है: उद्धरण चिह्नों के बिना "परीक्षण" () यह बढ़िया काम करता है। जब यह (डच में) की तरह अधिक लंबाई के साथ एक मूल्य है: certificaat वैन Maleisische
overheid F-Secure vindt मैलवेयर से मुलाकात की मैं इस त्रुटि मिलती है:
सीआई मंच परError Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘vindt malware met certificaat van Maleisische overheid,
user_id
= ‘1’ WHERE `i’ at line 1UPDATE
favorites
SETid
= ‘15’,rss_last
= F-Secure vindt malware met certificaat van Maleisische overheid,user_id
= ‘1’ WHEREid
= ‘15’ ANDuser_id
= ‘1’Filename: /home/.../domains/....nl/public_html/new/models/favorites_model.php
Line Number: 35
का कोई व्यक्ति इस का उपयोग करने के मुझे बताया :
'rss_last' => iconv("UTF-8", "UTF-8//TRANSLIT", $rss_last)
यह ठीक काम करता है, लेकिन मुझे लगता है कि यह आवश्यक नहीं है ..
मूल्य $ rss_last बाहर एक आरएसएस फ़ीड, आया के रूप में bef बताया अयस्क, कभी कभी एक UTF-8 और दूसरी बार एक ISO-8859-1 एन्कोडिंग:
$rss = file_get_contents('http://www.website.com/rss.xml');
$feed = new SimpleXmlElement($rss);
$rss_last = $feed->channel->item[0]->title;
ऐसा लगता है कि इस अंतिम भाग की तरह समस्या है, जब $ rss_last मान पर सेट है यह ठीक काम करता है:
$rss_last = 'F-Secure vindt malware met certificaat van Maleisische overheid';
जब मूल्य आरएसएस यह समस्या देना ...
कुछ और सवालों के बाहर आ गया ..
बस इस पाया: Detect encoding and make everything UTF-8
श्रेष्ठ समाधान?
$encoding = some_function_to_get_encoding_from_feed($feed);
$rss_last = iconv($encoding, "UTF-8//TRANSLIT", $feed->channel->item[0]->title);
लेकिन क्या "some_function_to_get_encoding_from_feed" के लिए उपयोग करने के लिए: लेकिन .. अधिक सरल नहीं, तो इस तरह कुछ करना है iconv? mb_detect_encoding?
और mb_convert_encoding बनाम iconv?
आपके जोड़े गए: आपके SQL अपडेट फ़ंक्शन में सभी _rss_last_ को छोड़कर उद्धरणों में एक पैरामेट करते हैं। हां, मुझे पता है कि यह सीआई द्वारा उत्पन्न होता है, लेकिन यह संदिग्ध है। –
_This ठीक काम करता है, लेकिन मुझे लगता है कि यह आवश्यक नहीं है .._ आपका अधिकार। –