- 浏览: 2032945 次
- 来自: 武汉
文章分类
- 全部博客 (415)
- UI设计 (19)
- PHP (26)
- PHP工具类 (23)
- 二次开发 (53)
- phpMVC (28)
- javascript (50)
- JS 组件 (20)
- MYSQL (37)
- 其他 (16)
- xml/flash/flex (6)
- 版本控制 (7)
- 开源 (4)
- bug解决 (5)
- Linux (15)
- NoSQL (14)
- 软件设计 (21)
- C/PHP内核 (5)
- 安全性 (8)
- 面试 (18)
- 设计模式 (4)
- 重构 (6)
- 开发配置 (11)
- SQL SERVER (12)
- 采集 (3)
- SEO (2)
- 维护 (15)
- UML (5)
- 硬件标准 (1)
- 架构 (8)
- JAVA (1)
最新评论
-
carry0987:
求大神分離下X3的模板...不然對於PHP7不友好啊...
分离自Discuz模板类和语法 -
青木得海角:
你好,里面的 Crypt/TripleDES.php 和 Cr ...
POS机算法 -
zohog:
楼主,Mac.php中里面的 Crypt/TripleDES. ...
POS机算法 -
zohog:
楼主,Mac.php中里面的 Crypt/TripleDES. ...
POS机算法 -
q59200182:
能不能给个完整的demo 新手上路不会 求带
AngularJs 指令directive之controller,link,compile
<?php /** * [Discuz!] (C)2001-2099 Comsenz Inc. * This is NOT a freeware, use is subject to license terms * * $Id: class_chinese.php 6757 2010-03-25 09:01:29Z cnteacher $ */ define('CODETABLE_DIR', DISCUZ_ROOT.'./source/include/table/'); class Chinese { var $table = ''; var $iconv_enabled = false; var $convertbig5 = false; var $unicode_table = array(); var $config = array ( 'SourceLang' => '', 'TargetLang' => '', 'GBtoUnicode_table' => 'gb-unicode.table', 'BIG5toUnicode_table' => 'big5-unicode.table', 'GBtoBIG5_table' => 'gb-big5.table', ); function Chinese($SourceLang, $TargetLang, $ForceTable = FALSE) { $this->config['SourceLang'] = $this->_lang($SourceLang); $this->config['TargetLang'] = $this->_lang($TargetLang); if(ICONV_ENABLE && $this->config['TargetLang'] != 'BIG5' && !$ForceTable) { $this->iconv_enabled = true; } else { $this->iconv_enabled = false; $this->OpenTable(); } } function _lang($LangCode) { $LangCode = strtoupper($LangCode); if(substr($LangCode, 0, 2) == 'GB') { return 'GBK'; } elseif(substr($LangCode, 0, 3) == 'BIG') { return 'BIG5'; } elseif(substr($LangCode, 0, 3) == 'UTF') { return 'UTF-8'; } elseif(substr($LangCode, 0, 3) == 'UNI') { return 'UNICODE'; } } function _hex2bin($hexdata) { for($i=0; $i < strlen($hexdata); $i += 2) { $bindata .= chr(hexdec(substr($hexdata, $i, 2))); } return $bindata; } function OpenTable() { $this->unicode_table = array(); if(!$this->iconv_enabled && $this->config['TargetLang'] == 'BIG5') { $this->config['TargetLang'] = 'GBK'; $this->convertbig5 = TRUE; } if($this->config['SourceLang'] == 'GBK' || $this->config['TargetLang'] == 'GBK') { $this->table = CODETABLE_DIR.$this->config['GBtoUnicode_table']; } elseif($this->config['SourceLang'] == 'BIG5' || $this->config['TargetLang'] == 'BIG5') { $this->table = CODETABLE_DIR.$this->config['BIG5toUnicode_table']; } $fp = fopen($this->table, 'rb'); $tabletmp = fread($fp, filesize($this->table)); for($i = 0; $i < strlen($tabletmp); $i += 4) { $tmp = unpack('nkey/nvalue', substr($tabletmp, $i, 4)); if($this->config['TargetLang'] == 'UTF-8') { $this->unicode_table[$tmp['key']] = '0x'.dechex($tmp['value']); } elseif($this->config['SourceLang'] == 'UTF-8') { $this->unicode_table[$tmp['value']] = '0x'.dechex($tmp['key']); } elseif($this->config['TargetLang'] == 'UNICODE') { $this->unicode_table[$tmp['key']] = dechex($tmp['value']); } } } function CHSUtoUTF8($c) { $str = ''; if($c < 0x80) { $str .= $c; } elseif($c < 0x800) { $str .= (0xC0 | $c >> 6); $str .= (0x80 | $c & 0x3F); } elseif($c < 0x10000) { $str .= (0xE0 | $c >> 12); $str .= (0x80 | $c >> 6 & 0x3F); $str .=( 0x80 | $c & 0x3F); } elseif($c < 0x200000) { $str .= (0xF0 | $c >> 18); $str .= (0x80 | $c >> 12 & 0x3F); $str .= (0x80 | $c >> 6 & 0x3F); $str .= (0x80 | $c & 0x3F); } return $str; } function GB2312toBIG5($c) { $f = fopen(CODETABLE_DIR.$this->config['GBtoBIG5_table'], 'r'); $max=strlen($c)-1; for($i = 0;$i < $max;$i++){ $h=ord($c[$i]); if($h>=160) { $l=ord($c[$i+1]); if($h==161 && $l==64){ $gb=" "; } else{ fseek($f,($h-160)*510+($l-1)*2); $gb=fread($f,2); } $c[$i]=$gb[0]; $c[$i+1]=$gb[1]; $i++; } } $result = $c; return $result; } function Convert($SourceText) { if($this->config['SourceLang'] == $this->config['TargetLang']) { return $SourceText; } elseif($this->iconv_enabled) { if($this->config['TargetLang'] <> 'UNICODE') { return iconv($this->config['SourceLang'], $this->config['TargetLang'], $SourceText); } else { $return = ''; while($SourceText != '') { if(ord(substr($SourceText, 0, 1)) > 127) { $return .= "&#x".dechex($this->Utf8_Unicode(iconv($this->config['SourceLang'],"UTF-8", substr($SourceText, 0, 2)))).";"; $SourceText = substr($SourceText, 2, strlen($SourceText)); } else { $return .= substr($SourceText, 0, 1); $SourceText = substr($SourceText, 1, strlen($SourceText)); } } return $return; } } elseif($this->config['TargetLang'] == 'UNICODE') { $utf = ''; while($SourceText != '') { if(ord(substr($SourceText, 0, 1)) > 127) { if($this->config['SourceLang'] == 'GBK') { $utf .= '&#x'.$this->unicode_table[hexdec(bin2hex(substr($SourceText, 0, 2))) - 0x8080].';'; } elseif($this->config['SourceLang'] == 'BIG5') { $utf .= '&#x'.$this->unicode_table[hexdec(bin2hex(substr($SourceText, 0, 2)))].';'; } $SourceText = substr($SourceText, 2, strlen($SourceText)); } else { $utf .= substr($SourceText, 0, 1); $SourceText = substr($SourceText, 1, strlen($SourceText)); } } return $utf; } else { $ret = ''; if($this->config['SourceLang'] == 'UTF-8') { $out = ''; $len = strlen($SourceText); $i = 0; while($i < $len) { $c = ord(substr($SourceText, $i++, 1)); switch($c >> 4) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: $out .= substr($SourceText, $i - 1, 1); break; case 12: case 13: $char2 = ord(substr($SourceText, $i++, 1)); $char3 = $this->unicode_table[(($c & 0x1F) << 6) | ($char2 & 0x3F)]; if($this->config['TargetLang'] == 'GBK') { $out .= $this->_hex2bin(dechex($char3 + 0x8080)); } elseif($this->config['TargetLang'] == 'BIG5') { $out .= $this->_hex2bin($char3); } break; case 14: $char2 = ord(substr($SourceText, $i++, 1)); $char3 = ord(substr($SourceText, $i++, 1)); $char4 = $this->unicode_table[(($c & 0x0F) << 12) | (($char2 & 0x3F) << 6) | (($char3 & 0x3F) << 0)]; if($this->config['TargetLang'] == 'GBK') { $out .= $this->_hex2bin(dechex($char4 + 0x8080)); } elseif($this->config['TargetLang'] == 'BIG5') { $out .= $this->_hex2bin($char4); } break; } } return !$this->convertbig5 ? $out : $this->GB2312toBIG5($out); } else { while($SourceText != '') { if(ord(substr($SourceText, 0, 1)) > 127) { if($this->config['SourceLang'] == 'BIG5') { $utf8 = $this->CHSUtoUTF8(hexdec($this->unicode_table[hexdec(bin2hex(substr($SourceText, 0, 2)))])); } elseif($this->config['SourceLang'] == 'GBK') { $utf8=$this->CHSUtoUTF8(hexdec($this->unicode_table[hexdec(bin2hex(substr($SourceText, 0, 2))) - 0x8080])); } for($i = 0; $i < strlen($utf8); $i += 3) { $ret .= chr(substr($utf8, $i, 3)); } $SourceText = substr($SourceText, 2, strlen($SourceText)); } else { $ret .= substr($SourceText, 0, 1); $SourceText = substr($SourceText, 1, strlen($SourceText)); } } $SourceText = ''; return $ret; } } } function Utf8_Unicode($char) { switch(strlen($char)) { case 1: return ord($char); case 2: $n = (ord($char[0]) & 0x3f) << 6; $n += ord($char[1]) & 0x3f; return $n; case 3: $n = (ord($char[0]) & 0x1f) << 12; $n += (ord($char[1]) & 0x3f) << 6; $n += ord($char[2]) & 0x3f; return $n; case 4: $n = (ord($char[0]) & 0x0f) << 18; $n += (ord($char[1]) & 0x3f) << 12; $n += (ord($char[2]) & 0x3f) << 6; $n += ord($char[3]) & 0x3f; return $n; } } } ?>
转化类用的数据库 source/include/table gb-unicode.table
$c = new Chinese('utf8', CHARSET, TRUE);
$data = $c->Convert($data);
发表评论
-
phpcms v9网站搬家更换域名的方法
2016-06-17 09:39 1511网站在发展的过程中,很可能多次的修改域名。那么在PHPCM ... -
phpcms SEO
2016-06-15 16:33 1337大家应该都是在header头文件里写上{if isset( ... -
Magento 自定义Url
2013-12-12 22:21 1332查看Url重写列表,在后台的Catalog > URL ... -
magento 如何安装模板主题
2013-11-07 23:26 2104注意区分“主题包”和“主题文件”这两个概念。我们所使用的主 ... -
MAGENTO调试时候,关闭缓存
2013-11-07 22:43 3649在调试MAGENTO的时候,我们其实不需要为了每一个小的的 ... -
Magento 返回不带Layout的页面输出
2013-08-06 13:58 8642. 在controller的代码方式创建并输出block ... -
magento 添加 删除css js
2013-06-03 20:41 2549在addJs、addCss的代码一般在page/html_ ... -
Magento Shell
2013-04-16 15:32 1487在magento/shell/下Virtualcard.p ... -
Magento 开启模板路径提示
2013-01-30 17:22 2283Magento 中, 任何一个页面中的 html 代码都来 ... -
Magento 中的事件
2013-01-06 14:19 1324magento的事件机制就跟dural的hook机制一样,为了 ... -
Magento Adminhtml Form
2012-11-29 17:37 1581开发Magento后台的时候经常用到表单(Varien_D ... -
Magento 添加后台管理 addColumn
2012-11-16 17:07 1989复选框 $row->getData($this-& ... -
Magento 覆写
2012-10-16 13:37 1535magento的覆写很重要,在项目开发过程中经常需要修改核心的 ... -
Magento 自动添加属性 自动添加表
2012-09-03 13:43 19741自动添加属性字段 config.xml <r ... -
Magento 临时替代默认店铺
2012-08-22 10:10 1450多店铺主题切换http://hudeyong926.ite ... -
Magento API v2 之webservice
2012-07-31 17:36 1828http://yourserver.com/api/v2_so ... -
Magento 添加后台管理
2012-07-27 11:13 4357后台菜单显示点击后404,如果adminhtml.xml配 ... -
Magento 如何调用static block
2012-04-19 15:53 1742若想在站点页面的某个地方放点静态的内容,比如广告,或者是促 ... -
Magento 数据库EVA
2012-03-14 16:30 2980实体,属性和值(EVA)数据库架构排在第一,非常难以把握。E ... -
Magento API v1 之webservice
2012-03-09 12:18 3097sales/etc/api.xml <?xml ver ...
相关推荐
【标题】"Discuz 提供的编码转换工具"涉及到的是网站论坛系统Discuz!中的一种常见操作,即字符编码的转换。在互联网发展的初期,不同的字符编码标准(如GBK和UTF-8)导致了跨平台、跨语言交流时的数据不兼容问题。...
官方的GBK/UTF8编码转换工具是Discuz! 社区论坛系统的重要补充,它的主要功能包括: 1. **数据转换**:该工具能够将论坛现有的GBK编码数据转换为UTF8编码,或反之,确保转换后所有帖子、用户资料、板块设置等信息的...
2)建表时候一切默认;至于导入*.SQL没试应该是不用动什么<!-----MySQL 字符集: UTF-8 Unicode (utf8) -----> 3)在 php 文件头部加入 ; charset=utf-8"></HEAD> "说明此文件编码为utf8" 4)在 mysql_select_db("表名...
转换过程中,工具会保留原始文件的结构和内容,只对字符编码进行替换,确保转换后的文件仍能正常运行于Discuz系统中。 在实际操作中,我们可以通过"51EC模板转码专用工具1.0.exe"这个执行文件来启动转码过程。运行...
UTF-8是一种国际通用的多字节字符编码,它可以表示Unicode字符集中的所有字符,且在互联网上被广泛支持。当需要将GBK编码的Discuz! 源码与其它UTF-8环境兼容,或者为了适应更广泛的国际用户时,就需要使用这类工具。...
在探讨Discuz模板的GBK编码及其升级到UTF8的过程中,我们首先需要了解这两种字符编码的基本概念。 **GBK编码**是中国大陆地区广泛使用的一种汉字编码标准,它兼容GB2312编码,并包含了更多的汉字以及符号。GBK编码...
所以对于MySQL4.0及其以下的版本,他们的字符集都是Latin1的,所以有时候需要对mysql的字符集进行一下转换,MySQL版本的升级、降级,特别是升级MySQL的版本,为了不让程序继续沿用Latin1字符集之后对以后Discuz!...
X3.4 是其一个稳定的版本,支持多种功能和优化,但有时在处理字符编码时可能会遇到问题。本文将详细介绍如何解决"DiscuzX3.4 UTF8转GBK后乱码"的问题,以及提供的资源如何使用。 首先,我们需要理解UTF-8和GBK两种...
是一款广泛应用的开源社区论坛软件,而GBK和UTF-8是两种常见的字符编码方式。 GBK编码,全称“汉字内码扩展规范”,是中国大陆广泛使用的多字节字符集,它包含了GB2312标准的所有字符,并增加了许多其他汉字和符号...
4. **编码转换**:由于历史原因,不同的中文地区可能使用不同的字符编码,如 BIG5(繁体中文)和 GBK(简体中文)。转换编码是一项技术挑战,因为它涉及到字符映射和防止数据丢失的问题。在升级论坛系统时,确保数据...
在Web开发领域,PHP是一种广泛使用的服务器端脚本语言,尤其在构建社区类网站时,UCenter Home(UCHome)是一个常用...总的来说,理解并掌握字符编码转换对于PHP开发者来说是必备技能,特别是在处理多语言社区系统时。
这款工具能够帮助用户快速有效地将大量文件从GBK编码转换为UTF8编码,或者反之,尤其对于像Discuz!这样的论坛模板调整来说,这是一个非常方便的解决方案。 GBK编码是中国大陆广泛使用的汉字编码标准,它是GB2312的...
GBK编码是GB2312编码的扩展,包含了更多的汉字和符号,能够支持更广泛的中文字符集,使得在论坛中使用各种中文词汇和特殊字符时不会出现乱码问题。这对于以中文为主要交流语言的社区来说至关重要,确保了用户在浏览...
`Base64.java`文件可能包含了一个自定义的Base64编码和解码实现,这对于处理Discuz中可能涉及的编码转换非常有用。 接着,`Authcode3.java`可能是实现Discuz论坛的特定加密算法。"Authcode"是Discuz使用的一种加密...
的字符编码方式,全称为Simplified Chinese UTF-8,即简体中文UTF-8编码。这种编码方式能够支持更多的汉字字符,避免了在处理中文内容时可能出现的乱码问题,提升了用户体验。 Discuz! 应用中心客户端的安装对于...
2. **编码转换**:在处理GBK编码的工单时,系统可能需要将其转换为UTF8,以便与其他系统或数据库进行交互。 3. **存储兼容性**:数据库设计应考虑到两种编码,确保数据存储的稳定性和一致性。 4. **接口兼容**:如果...
"模板转码专用工具"就是这样一个专门针对编码转换的实用程序,它为用户提供了一种便捷的方式,将HTML(超文本标记语言)和XML(可扩展标记语言)文档从一种字符编码格式转换到另一种。这个工具对于那些处理多种编码...
如果论坛本身是UTF-8编码,那么需要考虑插件是否支持编码转换。 6. **安全与更新**:任何插件都有潜在的安全风险,定期检查并更新插件到最新版本是必要的,以防止安全漏洞被利用。同时,保持与Discuz!核心版本的...
为了确保插件在各种编码环境下正常工作,开发者可能需要对字符串进行适当的编码转换处理,以避免乱码问题。 安装此类插件通常涉及以下几个步骤: 1. 下载`滑动返回顶部插件for Discuz! ALL`的rar压缩包。 2. 解压...
《PHP实例开发源码—UCenter Home 简体GBK与utf8.zip》是一个包含PHP编程语言实际应用的源码包,主要涉及UCenter Home这一社区软件的编码转换问题。UCenter Home是一款由Comsenz公司开发的社交网络平台,它能够与...