我用笨不是這麼長時間,但我有一些字符集問題..我問周圍的CI論壇,但我想走得更遠,還沒有全球性解決方案:http://codeigniter.com/forums/viewthread/204409/笨和charsets
問題是數據庫錯誤1064.我有一個解決方案,使用iconv!工作正常,但我認爲沒有必要。我正在尋找很多在互聯網上的字符集等,但我現在使用CI,如何字符集和CI ...
所以我有很多關於它的問題,我希望有人可以說清楚對我來說:
什麼是設置全球字符集的最佳方式?以及要設置什麼?
在頭
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
在配置/ config.php中
$config['charset'] = 'UTF-8';
在配置/ 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');
在我的編輯器(記事本++)文件保存爲UTF-8?或者UTF-8(沒有BOM)?或者ANSI是好的(這是我現在使用的)?
使用utf8_unicode_ci或utf8_general_ci作爲MySQL數據庫嗎?爲什麼?
如何閱讀RSS訂閱源,如何處理多個字符集?在我工作的地方,我有兩個提要,一個使用UTF-8編碼,另一個使用ISO-8859-1。這將存儲在數據庫中,並且有時會進行比較以查看是否有新項目。它在特殊字符上失敗。
我的工作: - CI 2.0.3 - PHP 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就像是一個「正常」的值:「測試」(沒有引號)它工作正常。 當它與更象(荷蘭語)長度的值:F-Secure的vindt惡意軟件滿足certificaat麪包車Maleisische overheid
我得到這個錯誤:
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
有人在CI論壇上告訴我使用這個:
'rss_last' => iconv("UTF-8", "UTF-8//TRANSLIT", $rss_last)
這工作得很好,但我認爲這是沒有必要的..
價值$ rss_last出來一個RSS源,如告訴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';
當值出來的RSS它產生問題......
一些更多的問題..
剛剛發現這一點:Detect encoding and make everything UTF-8
最佳解決方案?但..是的iconv不是更簡單,做這樣的事情:
但需要使用什麼「some_function_to_get_encoding_from_feed」? mb_detect_encoding?
而且mb_convert_encoding vs iconv?
添加到您的:在您的SQL更新函數中,除_rss_last_之外的所有參數都在引號中。是的,我知道它是由CI產生的,但這是可疑的。 –
_這工作正常,但我認爲這不是必要的.._你的權利。 –