![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
参考资料:
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]
主要问题是,在得到了一个字在码表中的坐标后 ,不知道如何在表中按照这个坐标得到这个字.

