社区
基础编程
帖子详情
如何将gb2312转换为utf-8
bluenet21
2006-06-28 03:05:02
服务器不支持iconv,想找个替代方案。
谢谢!
...全文
1006
6
打赏
收藏
如何将gb2312转换为utf-8
服务器不支持iconv,想找个替代方案。 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lostgdi731
2006-07-17
打赏
举报
回复
fun_gb2utf8.php:
<?
//不用iconv库的gb2312与utf-8的互换函数//对照表的使用
function get_charset(){
$filename = "fun_gb2utf8.txt";
$fp = fopen($filename,"r");
while(! feof($fp)) {
list($gb,$utf8) = fgetcsv($fp,10);
$charset[$gb] = $utf8;
}
fclose($fp);
return $charset;
}
//以上读取对照表到数组备用
/** gb2312到utf-8 **/
function gb2utf8($text, &$charset) {
//提取文本中的成分,汉字为一个元素,连续的非汉字为一个元素
preg_match_all("/(?:[\x80-\xff].)|[\x01-\x7f]+/",$text,$tmp);
$tmp = $tmp[0];
//分离出汉字
$ar = array_intersect($tmp, array_keys($charset));
//替换汉字编码
foreach($ar as $k=>$v) {
$tmp[$k] = $charset[$v];
}
//返回换码后的串
return join('',$tmp);
}
/** utf-8到gb2312 **/
function utf82gb($text, &$charset) {
$p = "/[\xf0-\xf7][\x80-\xbf]{3}|[\xe0-\xef][\x80-\xbf]{2}|[\xc2-\xdf][\x80-\xbf]|[\x01-\x7f]+/";
preg_match_all($p,$text,$r);
$utf8 = array_flip($charset);
foreach($r[0] as $k => $v) {
if(isset($utf8[$v])) {
$r[0][$k] = $utf8[$v];
}
}
return join('',$r[0]);
}
/*
//调用示例
$gb2utf_charset=get_charset();
$strhan = "测试汉字GB转换为UTF8,测试汉字UTF8转换为GB。";
echo " strhan(".strlen($strhan).")=".$strhan." <br/>\n";
$strhan_ut=gb2utf8($strhan, $gb2utf_charset);
echo " strhan(".strlen($strhan_ut).")=".$strhan_ut." <br/>\n";
$strhan_gb=utf82gb($strhan_ut_i, $gb2utf_charset);
echo " strhan(".strlen($strhan_gb).")=".$strhan_gb." <br/>\n";
*/
?>
这个文件: fun_gb2utf8.txt 好象网上没有,你要的加我Q我发给你。56079024
lantersen
2006-07-17
打赏
举报
回复
mb_convert_encoding
(PHP 4 >= 4.0.6, PHP 5)
mb_convert_encoding -- Convert character encoding
$str = mb_convert_encoding($str, "UTF-8","GB2312");
levopat
2006-07-04
打赏
举报
回复
<?php
$v = new convert;
echo 'test'.$v->UTF2gb('转换了');
class convert {
//gb2312和utf-8对应的编码文件
var $filename = "gb2312.txt";
var $codetable = array(); //码表读取后存入这个数组
//构造函数
function convert() {
$tmp = file($this->filename);
while( list($key,$value) = each($tmp) )
$this->codetable[hexdec(substr($value,0,6))] = substr($value,7,6);
}
//GB->UTF-8
function toUTF8($gb) {
//转换过程可参考上面列出的文章,这里就不贴了
return $utf8;
}
function UTF2gb($str) {
if( !trim($str) )
return $str;
$reverse = array();
while( list($key,$value) = each($this->codetable) )
$reverse[hexdec($value)] = $key;
$gb = "";
while($str) {
if ( ord(substr($str,0,1))>0xE0 )
{
$tmp = substr($str,0,3);
$str = substr($str,3,strlen($str));
$utf = hexdec(bin2hex($tmp));
$unicode = (($utf & 0x0F0000)>>4) | (($utf & 0x3F00)>>2)
| ($utf & 0x3F) ;
$gb = $gb . pack("n",($reverse[$unicode])|0x8080 );
}
else
{
$gb = $gb . substr($str,0,1);
$str = substr($str,1,strlen($str));
}
}
return $gb;
}
}
?>
黑夜路人
2006-07-04
打赏
举报
回复
php有很多扩展,比如iconv和mbstring就是做这个滴
嗯,当然也可以是使用php来实现,不过效率比较低,还是使用扩展比较好,速度快,而且还稳定,不过iconv0.9有bug,个人推荐使用mbstring就OK了
ImN1
2006-06-28
打赏
举报
回复
用javascript
不过反向utf8->gb2312就不行了
Gdj
2006-06-28
打赏
举报
回复
查表
批量文件编码
转换
工具(
Utf-8
转
GB2312
、
GB2312
转
Utf-8
)
本工具可以根据需要批量将一个目录及其子目录下的所有文件
转换
为
GB2312
或
Utf-8
编码文件,绿色软件,无需安装。 需要.NET Framework v2.0 运行库支持。
文本文件编码
转换
工具 gbk utf8
gb2312
charset=
utf-8
"></HEAD> "说明此文件编码为utf8" 4)在 mysql_select_db("表名",$id); 后面加入一行 mysql_query("set names utf8;"); <!-----说明数据库连接也用utf8编码-----> 5)*.php 文件在存盘的时候也以 ...
把
GB2312
/GBK/GB18030编码的文档
转换
为
utf-8
编码
iconv -f gb18030 -t
utf-8
file1 >...iconv -f
gb2312
-t
utf-8
file1 > file2 iconv -f
gb2312
-t
utf-8
file1 -o file2 反之,可以这样
转换
: iconv -f
utf-8
-t gb18030 file2 >.
文件编码格式的
转换
之
GB2312
转
UTF-8
Without BOM
中文区最常使用的两种文件...我们都知道,非常不幸的,
GB2312
与
UTF-8
互相不通用,在不知道文件编码格式的情况下,使用特定编码格式打开另一种编码格式的文件,基本上只能看到乱码。 为什么有的时候看到的不是乱码? 在
GB2132转
UTF-8
单片机端常用的中文显示字符集是
GB2312
, 相对于
UTF-8
表示中文时更节省空间, 但是Linux端为了通用及兼容性常采用
UTF-8
作为字符编码, 为了保持编码的的统一, 网络通信时单片机内部将
GB2312
转为
UTF-8
发送给Linux, 于是...
基础编程
21,886
社区成员
140,364
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章