作者:小女人要有小性感 | 来源:互联网 | 2020-09-16 20:41
php中big5转utf8乱码的解决办法:首先生成tab文件,并生成时要保证tab文件不存在;然后将指定页面转码测试;接着打印出文字库;最后big5转【utf-8】即可。
php中big5转utf8乱码的解决办法:首先生成tab文件,并生成时要保证tab文件不存在;然后将指定页面转码测试;接着打印出文字库;最后big5转【utf-8】即可。
php中big5转utf8乱码的解决办法:
第一步:生成tab文件,生成时要保证tab文件不存在才可以
writebig5UnicodeFile();
第二步:指定页面转码测试
testCode();
第三步:打印出文字库
printfCode();
$unicode) {
$h = floor($big5/256);
$l = $big5%256;
$index = ($h-135)*256*3+$l*3;
if($index<$min) {
$min = $index;
}
if($max<$index) {
$max = $index;
}
if($unicode>$max_unicode) {
$max_unicode = $unicode;
}
$h_1 = floor($unicode/65536);
$h_2 = floor($unicode/256);
$h_3 = $unicode%256;
$big5_unicod_content[$index] = chr($h_1).chr($h_2).chr($h_3);
}
for($i=0;$i<=$max;$i=$i+3) {
if(!isset($big5_unicod_content[$i])) {
$big5_unicod_content[$i] = chr(0).chr(0).chr(0);
}
}
for($i=0;$i<=$max;$i=$i+3) {
if(strlen($big5_unicod_content[$i]) == 3) {
putContent($big5_unicod_content[$i]);
}else{
die(&#39;error&#39;);
}
}
}
//测试编辑结果
function testCode() {
$cOntent= file_get_contents( &#39;./temlate_2.html&#39;);
echo b2u($content);
}
//打印出编码库文字
function printfCode() {
$fp = fopen( &#39;./big5-unicode-new.tab&#39;, &#39;r&#39; );
$len = filesize(&#39;./big5-unicode-new.tab&#39;);
$x = 0;
$outstr = array();
// fseek( $fp, 21000 - 900 + 42*3);
for($i=$x=0;$i<$len;$i=$i+3) {
$uni = fread( $fp, 3 );
$codenum = ord($uni[0])*65536 + ord($uni[1])*256 + ord($uni[2]);
if($codenum == 0) {
$outstr[$x++] = &#39; &#39;;
}elseif( $codenum <0x80 ) {
$outstr[$x++] = chr($codenum);
}elseif($codenum <0x800) {
$outstr[$x++] = chr( 192 + $codenum / 64 );
$outstr[$x++] = chr( 128 + $codenum % 64 );
}elseif($codenum <0x10000){
$outstr[$x++] = chr( 224 + floor($codenum / 4096 ));
$codenum = $codenum%4096;
$outstr[$x++] = chr( 128 + floor($codenum / 64 ));
$outstr[$x++] = chr( 128 + ($codenum % 64) );
}else{
$outstr[$x++] = chr( 240 + floor($codenum / 262144 ));
$codenum = $codenum%262144;
$outstr[$x++] = chr( 128 + floor($codenum / 4096 ));
$codenum = $codenum%4096;
$outstr[$x++] = chr( 128 + ($codenum / 64) );
$outstr[$x++] = chr( 128 + ($codenum % 64) );
}
}
echo join( &#39;&#39;, $outstr);
}
//big5 转 utf-8
function b2u( $instr ) {
$fp = fopen( &#39;./big5-unicode-new.tab&#39;, &#39;r&#39; );
$len = strlen($instr);
$outstr = &#39;&#39;;
for( $i = $x = 0 ; $i <$len ; $i++ ) {
$h = ord($instr[$i]);
if( $h >= 135 ) {
$l = ord($instr[$i+1]);
fseek( $fp, ($h-135)*256*3+$l*3 );
$uni = fread( $fp, 3 );
$codenum = ord($uni[0])*65536 + ord($uni[1])*256 + ord($uni[2]);
if($codenum == 0) {
$outstr[$x++] = &#39; &#39;;
}elseif( $codenum <0x80 ) {
$outstr[$x++] = chr($codenum);
}elseif($codenum <0x800) {
$outstr[$x++] = chr( 192 + $codenum / 64 );
$outstr[$x++] = chr( 128 + $codenum % 64 );
}elseif($codenum <0x10000){
$outstr[$x++] = chr( 224 + floor($codenum / 4096 ));
$codenum = $codenum%4096;
$outstr[$x++] = chr( 128 + floor($codenum / 64 ));
$outstr[$x++] = chr( 128 + ($codenum % 64) );
}else{
$outstr[$x++] = chr( 240 + floor($codenum / 262144 ));
$codenum = $codenum%262144;
$outstr[$x++] = chr( 128 + floor($codenum / 4096 ));
$codenum = $codenum%4096;
$outstr[$x++] = chr( 128 + ($codenum / 64) );
$outstr[$x++] = chr( 128 + ($codenum % 64) );
}
$i++;
}
else
$outstr[$x++] = $instr[$i];
}
fclose($fp);
if( $instr != &#39;&#39; )
return join( &#39;&#39;, $outstr);
}
相关学习推荐:PHP编程从入门到精通
以上就是php中big5转utf8乱码怎么办?的详细内容,更多请关注 第一PHP社区 其它相关文章!