发新话题
打印

[原创]mambo 4.5.2后台及RSS乱码完美简单解决方案&抓虫手记

还有:

Utf-8是一种标准存储编码格式,用utf-8编码后的字节流具有非常好的防(纠)错和兼容能力。用utf-8编码(encode)unicode码时不会有信息损失。当然用utf-8解码(decode)utf-8编码的字节流,生成unicode码时也不会有信息损失。但禁止用utf-8解码非 utf-8编码的字节流。总之Utf-8可以编码任何unicode 码,但只能解码utf-8编码的字节流。
Utf-16和utf-8用法是一样的,仅是一点不同:utf-16是双字节倍数编码,utf-8是单字节倍数编码,在英文国家里用utf-8和ascii编码后的字节流是一样的,这样有利于系统平稳升级到支持utf-8的系统里,但系统要升级到支持utf-16就要把所有数据都更新一遍,这显然不能接受。注意:utf-16根据字节排序不同有两种编码

Iso8859-1是西方国家频繁使用的字符编码格式。用iso8859-1编码unicode码中的东方字库部分的字符时统统编码成??,也就是说:用iso8859-1编码unicode码时信息会有损失。但用iso8859-1解码任意(iso8859-1编码的和非 iso8859-1编码的)字符流时,信息不会有损失,这是因为一个字节中的所有256个字符对iso8859-1都是合法的都是合法的。有时候在一些 linux操作系统和一些应用服务器里,默认的解码方式是iso8859-1,这是大多数乱码的原因。
Gb18030,gbk,gb2312是汉字字符的编码格式,用gb18030(gbk,gb2312和gb18030是同一系列,不过字库要小,但使用方式是一样的)编码unicode码时非中英文的字符会被编码为?,也就是说,用gb18030只能编码unicode中的中英文字符,其他的字符都会被损失掉。同样用gb18030解码只能解码 gb18030编码的字符流。
Xml文件中 是告诉浏览器要用要用指定的编码格式解码自身这个文件。
字符集转换的基本思想很简单,用某种字符编码规则编码,就用什么编码规则解码,经常出问题的深层次原因是php对字节流未提供编码信息,可以认为这是一个严重的失误。
mambo整合discuz同步注册登录,全站utf-8编码,php5+mysql5
http://www.bytea.net

TOP

引用:
原帖由 spirit 发表
superpeter 写到:
TO;jklin
我根据你提供的方法的5个步骤做完,在进行mambo安装时,输入localhost/(我的mambo所有文件直接安装在根目录下),没有出现安装界面,也现了一个警告:
Warning: Cannot modify header information - headers already sent by (output started at H:\knowledge_admin\index.php:1) in H:\knowledge_admin\index.php on line 15
不知道是什么原因


那是因为你转换的utf-8时转成了带签名的.

我想问一下jklin
你讲到把gb2312这样的字串换成UTF-8
而如果是iso-8859-1,也要换吗?这种的就不必换了吧.
页面里如果指定编码方式为iso-8859-1,那么也转换为utf-8.确实可能是你刚刚提到的这个原因,有些软件转换成utf-8编码里,头两个字节指定编码的标记.

TOP

学到了不少东西

呵呵
收藏

谢谢大家了
[img:e930e9c82d]http://www.94bt.net/bbs/images/bb/94bt.gif[/img:e930e9c82d][url]http://www.94bt.net[/url] 94BT综合资源网

TOP

下载了楼主提供的完整的干净安装包,安装后,内容条目管理上面的菜单显示变形了 如图。请问如何调整?谢谢!
附件: 您所在的用户组无法下载或查看附件

TOP

好用 省事

多谢
呵呵

TOP

跪谢

困惑我好几天的问题,终于解脱,好人那!!

TOP

强人 我爱你啊

TOP

[color=green]我的怎么服务器设置修改了还是乱码 [/c ?AddDe...

AddDefaultCharset GB2312

TOP

[问题]linux下中文网页乱码问题?

顶支持

TOP

谢谢分享,解决了

TOP

[讨论]Re: 如何转换为UTF-8

引用:
原帖由 jklin 发表
引用:
原帖由 superpeter 发表
To:jklin
请问如果将所有页面的编码全部转换为UTF-8,本人这方面知识比较欠缺,请详细地一步一步讲,谢谢!
1.先去下载个mambo 4.5.2.3黄金版

2.解压缩后,把目录下所有的扩展名为.html,.php,.xml,.sql的文件编码格式转换为utf-8.这步我写了个php cli脚本调用iconv来做.Windows下的话,你可以用找些批量改编码的软件,我没试过.

3.再修改目录下的所有xml扩展名文件的编码为utf-8,同样的这个你可以写个php cli来调用sed awk来做.我这里简单点,直接用ultraedit的批量文件替换来做.还有一点,就是installation目录下的php扩展名的文件的编码也要替换一下,写个sed,awk脚本是全自动的.不然的话就用ultraedit,或editplus查找gb2312的编码,一律改成utf-8的.再把language目录下的simplified_chinese.php文件里的/** templates/*.php */
DEFINE('_ISO','charset=gb2312');改为/** templates/*.php */
DEFINE('_ISO','charset=utf-8');

文件编码改完了,下面要对数据库动手脚了:
4.首先创建mambo数据库时,要选择utf-8编码.如果你使用phpmyadmin创建数据库时,只要选择utf-8下面的集合就可以了.
5.修改includes/database.php在73行前面加入设置相关数据库编码语句:
复制内容到剪贴板
代码:
function database( $host='localhost', $user, $pass, $db, $table_prefix ) {
                // perform a number of fatality checks, then die gracefully
                if (!function_exists( 'mysql_connect' )) {
                        //or die( 'FATAL ERROR: MySQL support not available.  Please check your configuration.' );
                        $mosSystemError = 1;
                        $basePath = dirname( __FILE__ );
                        include $basePath . '/../configuration.php';
                        include $basePath . '/../offline.php';
                        exit();
                }
                if (!($this->_resource = @mysql_connect( $host, $user, $pass ))) {
                        //or die( 'FATAL ERROR: Connection to database server failed.' );
                        $mosSystemError = 2;
                        $basePath = dirname( __FILE__ );
                        include $basePath . '/../configuration.php';
                        include $basePath . '/../offline.php';
                        exit();
                }
                if (!mysql_select_db($db)) {
                        //or die( "FATAL ERROR: Database not found. Operation failed with error: ".mysql_error());
                        $mosSystemError = 3;
                        $basePath = dirname( __FILE__ );
                        include $basePath . '/../configuration.php';
                        include $basePath . '/../offline.php';
                        exit();
                }
                [b]mysql_query("SET NAMES 'utf8'");[/b]
                $this->_table_prefix = $table_prefix;
                $this->_ticker = 0;
                $this->_log = array();
        }
如果你的mysql是4.1.x以前版本的,我没试过.你可以参考mysql文档来做.这样基本上就把mambo转换为utf-8编码了.还有一点就是PHP5.0.X版本相对于4.x.x版本改变挺大,mambo有些代码可能不兼容,这时你可以看看php的出错提示,直接修改.
高手如云啊!这个帖子都变成解决乱码问题的专题了。看来不少人都关心这个问题,建议开个分坛专门研究字符集转码乱码以及升级问题,如何?

TOP

正为乱码烦脑,下个补丁回去看看
不过先谢谢您了
不要说咱只看不回

TOP

那里有没有错误的安装包下啊,为什么主页上新下的也没有更新

TOP

谢谢啊  乱码问题解决了

TOP

感谢!

谢谢牛人!解决问题

TOP

高手,终于搞定了 。,谢谢

TOP

我用的是4.5.3,后台乱码搞定了,但是RSS还是乱!!!!!

TOP

rss问题还是没解决  我修改了feedcreator.class.php全部为gb2312还是不行哦

TOP

学习一下

TOP

!~~~~~~~~
我的joomlar  
Joomla技术讨论群:     24047103\27975839
PHP开发框架--fleaphp  

TOP

发新话题