$ Uc2gbtable = $ codetable = $ big5_data = $ gb_data = '';
$ Gbkunidic = null;
// UTF-8 to gb encoding
Function utf82gb ($ utfstr)
{
If (function_exists ('iconv '))
{
Return iconv ('utf-8', 'gbk // ignore ', $ utfstr );
}
Global $ uc2gbtable;
$ Okstr = "";
If (trim ($ utfstr) = "")
{
Return $ utfstr;
}
If (empty ($ uc2gbtable ))
{
$ Filename = dedeinc. "/data/gb2312-utf8.dat ";
$ Fp = fopen ($ filename, "r ");
While ($ l = fgets ($ fp, 15 ))
{
$ Uc2gbtable [hexdec (substr ($ l, 7, 6)] = hexdec (substr ($ l, 0, 6 ));
}
Fclose ($ fp );
}
$ Okstr = "";
$ Ulen = strlen ($ utfstr );
For ($ I = 0; $ I <$ ulen; $ I ++)
{
$ C = $ utfstr [$ I];
$ Cb = decbin (ord ($ utfstr [$ I]);
If (strlen ($ cb) = 8)
{
$ Csize = strpos (decbin (ord ($ cb), "0 ");
For ($ j = 0; $ j <$ csize; $ j ++)
{
$ I ++; $ c. = $ utfstr [$ I];
}
$ C = utf82u ($ c );
If (isset ($ uc2gbtable [$ c])
{
$ C = dechex ($ uc2gbtable [$ c] + 0x8080 );
$ Okstr. = chr (hexdec ($ c [0]. $ c [1]). chr (hexdec ($ c [2]. $ c [3]);
}
Else
{
$ Okstr. = "& #". $ c .";";
}
}
Else
{
$ Okstr. = $ c;
}
}
$ Okstr = trim ($ okstr );
Return $ okstr;
}