PHP 读取两个不同用户的txt文件,会输出两种不同的编码,请问如何把他们的字符编码统一,进入DB会乱码啊
4个回答
展开全部
function gb2utf8($gbstr){
if(function_exists('iconv'))
{
return iconv('gbk','utf-8//ignore',$gbstr);
}
global $CODETABLE;
if(trim($gbstr)=="")
{
return $gbstr;
}
if(empty($CODETABLE))
{
$filename = "data/gb2312-utf8.dat";
$fp = fopen($filename,"r");
while ($l = fgets($fp,15))
{
$CODETABLE[hexdec(substr($l, 0, 6))] = substr($l, 7, 6);
}
fclose($fp);
}
$ret = "";
$utf8 = "";
while ($gbstr != '')
{
if (ord(substr($gbstr, 0, 1)) > 0x80)
{
$thisW = substr($gbstr, 0, 2);
$gbstr = substr($gbstr, 2, strlen($gbstr));
$utf8 = "";
@$utf8 = u2utf8(hexdec($CODETABLE[hexdec(bin2hex($thisW)) - 0x8080]));
if($utf8!="")
{
for ($i = 0;$i < strlen($utf8);$i += 3)
$ret .= chr(substr($utf8, $i, 3));
}
}
else
{
$ret .= substr($gbstr, 0, 1);
$gbstr = substr($gbstr, 1, strlen($gbstr));
}
}
return $ret;
}
这是 gbk转 utf8 的函数
现在流行的都是 utf8 编码
你从 txt中读取出来之后 把所获取的内容传递给该函数
该函数会把编码转换成 utf8 并返回
这个是我以前做采集程序的时候用过的 ~ 因为有些网站使用的是gbk编码
但是我数据表是 utf8 入库的时候出现乱码 用该函数解决了这个问题 你可以研究一下!
if(function_exists('iconv'))
{
return iconv('gbk','utf-8//ignore',$gbstr);
}
global $CODETABLE;
if(trim($gbstr)=="")
{
return $gbstr;
}
if(empty($CODETABLE))
{
$filename = "data/gb2312-utf8.dat";
$fp = fopen($filename,"r");
while ($l = fgets($fp,15))
{
$CODETABLE[hexdec(substr($l, 0, 6))] = substr($l, 7, 6);
}
fclose($fp);
}
$ret = "";
$utf8 = "";
while ($gbstr != '')
{
if (ord(substr($gbstr, 0, 1)) > 0x80)
{
$thisW = substr($gbstr, 0, 2);
$gbstr = substr($gbstr, 2, strlen($gbstr));
$utf8 = "";
@$utf8 = u2utf8(hexdec($CODETABLE[hexdec(bin2hex($thisW)) - 0x8080]));
if($utf8!="")
{
for ($i = 0;$i < strlen($utf8);$i += 3)
$ret .= chr(substr($utf8, $i, 3));
}
}
else
{
$ret .= substr($gbstr, 0, 1);
$gbstr = substr($gbstr, 1, strlen($gbstr));
}
}
return $ret;
}
这是 gbk转 utf8 的函数
现在流行的都是 utf8 编码
你从 txt中读取出来之后 把所获取的内容传递给该函数
该函数会把编码转换成 utf8 并返回
这个是我以前做采集程序的时候用过的 ~ 因为有些网站使用的是gbk编码
但是我数据表是 utf8 入库的时候出现乱码 用该函数解决了这个问题 你可以研究一下!
追问
这两种编码如何判断啊
追答
一般你读txt文本的话 大部分都是 gbk编码
比如你读取txt文本的结果存放在
$str 变量中的话 你就不用管他是什么编码
直接
$str = gb2utf8($str);
这样调用该函数 他会返回一个 utf8编码的内容
在把他存到数据表里就OK了 试一试 如果不行在追问 ~
展开全部
应该是txt文件的编码方式的问题吧,你先要确定两个txt都是什么编码储存的,再通过程序来统一
更多追问追答
追问
文件编码是UTF8还是GB怎么判断呢?
追答
你用记事本打开txt文件,选择另存为,下面就会显示是什么编码了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用mb_convert_encoding() 或者iconv()函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
文档->文件编码->跟改文件编码
你生成的文档加一句 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
最好在<title>之前
你生成的文档加一句 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
最好在<title>之前
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询