麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
希望大家能帮我搞定这个gbk->big5的转换问题.
悬赏分:20 - 2007年08月15日

参考资料:

http://www3.ccw.com.cn/club/essence/200311/19312.htm

http://www.linuxbyte.net/view.php?skin=art&ID=3217

生成GBK编码代码:

参考资料:
http://neweb.dhcn.net/article/delphi/2183.shtml

[PHP]
<?php

$file = 'GBKCode.txt';

$fp = fopen( $file, 'w' );

if ( !$fp ) return false;

for ( $i = 161; $i <= 169; $i ++ )
{
for ( $j = 161; $j <= 254;$j ++ )
{
$content = chr($i).chr($j);
fwrite ( $fp, $content );
}
}

for ( $i = 176; $i <= 247; $i ++ )
{
for ( $j = 161; $j <= 254;$j ++ )
{
$content = chr($i).chr($j);
fwrite ( $fp, $content );
}
}

for ( $i = 81; $i <= 160; $i ++ )
{
for ( $j = 40; $j <= 254;$j ++ )
{
$content = chr($i).chr($j);
fwrite ( $fp, $content );
}
}

for ( $i = 170; $i <= 254; $i ++ )
{
for ( $j = 40; $j <= 160;$j ++ )
{
$content = chr($i).chr($j);
fwrite ( $fp, $content );
}
}

for ( $i = 168; $i <= 169; $i ++ )
{
for ( $j = 40; $j <= 160;$j ++ )
{
$content = chr($i).chr($j);
fwrite ( $fp, $content );
}
}

fclose ( $fp );
?>
[/PHP]


编码转换代码,未成功!帖出来,给大家做参考.

[PHP]
function gbk2big5 ( $str )
{
$tmp = '';
$fp = fopen ( 'GBKCode.txt', 'r' );
$max = strlen ( $str );

for ( $i = 0; $i < $max; $i ++ )
{
$ch1 = ord ( $str[$i] );

if ( $ch1 >= 129 && $ch1 <= 254 )
{
$ch2 = ord ( $str[$i+1] );

if ( ( $ch2 >= 64 && $ch2 <= 127 ) || ( $ch2 > 127 && $ch2 <= 254 ) )
{
// 如果是GBK码的文字,得到到在码表的位置
$posit = ( $ch1 - 129 ) * 190 + ( $ch2 - 64 ) - ( $ch2/128 );
$posit = $posit * 2;

if ( ( $posit > 23940*2 ) || ( $posit < 0 ) )
{
$tmp .= '';
}
else
{
fseek ( $fp, $posit );
echo ftell( $fp );
$big5 = fread( $fp, 2 );

$tmp .= $big5;
}

$i ++;
}
else
{
$i ++;
}
}
else
{
// 不是GBK码的文字
$tmp .= substr ( $str, $i, 1 );
}

}

return $tmp;

}
[/PHP]

主要问题是,在得到了一个字在码表中的坐标后 ,不知道如何在表中按照这个坐标得到这个字.

提问者:heimayi   08-15 08:08
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
48 + 8 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM