php codeigniter 设置编码,php – Codeigniter和charsets

我使用Codeigniter的时间不长,但我遇到了一些字符串问题.我在CI论坛上问过,但我想更进一步,仍然没有全球解决方案:

http://codeigniter.com/forums/viewthread/204409/

问题是数据库错误1064.我有一个解决方案,使用iconv!工作正常,但我认为没有必要.我在互联网上搜索charset等等,但我现在正在使用CI,如何使用charsets和CI …

所以我对此提出了很多疑问,希望有人能为我说清楚:

设置charset全局的最佳方法是什么?什么设置?

>头脑中

< 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关闭

AddDefaultCharset UTF-8

>还需要发送标题?在哪里放置?就像是?

header(‘Content-Type:text / html; charset = UTF-8’);

>在我的编辑器(记事本)中将文件保存为UTF-8?还是UTF-8(没有BOM)?或者ANSI是好的(这是我现在使用的)?

>对MySQL数据库使用utf8_unicode_ci或utf8_general_ci?为什么?

>如何阅读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是一个“正常”值,如:“test”(没有引号),它工作正常.

当它是一个更长的值(荷兰语)时:F-Secure vindt恶意软件遇到了证书van 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 1

UPDATE favorites SET id = ‘15’, rss_last = F-Secure vindt

malware met certificaat van Maleisische overheid, user_id = ‘1’

WHERE id = ‘15’ AND user_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提要,如前所述,有时是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会给出问题……

还有一些问题..

最佳方案?但..是iconv不是更简单,做这样的事情:

$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”? mb_detect_encoding?

和mb_convert_encoding vs iconv?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值