本人用的是网络上现成的类文件excel_class.php,然后读取book.xls文件,可是问题就来了,再浏览器上可以正常显示excel表格字段---“张龙”,可插入数据库就不行了,变成乱码“王红艳”
<?php
require "excel_class.php";
Read_Excel_File("book.xls",$return);
echo $name= $return[Sheet1][1][1];//再浏览器上正常显示中文名字张龙(excel表格字段)
$conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误");
mysql_select_db("chongzhi", $conn);
mysql_query("set names 'GBK'");
mysql_query("INSERT INTO `table` (`name`) VALUES ('$name');");//再mysql库里面变成"王红艳",怎么解决乱码
?>其中execl表:姓名
张龙
赵虎
<?php
require "excel_class.php";
Read_Excel_File("book.xls",$return);
echo $name= $return[Sheet1][1][1];//再浏览器上正常显示中文名字张龙(excel表格字段)
$conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误");
mysql_select_db("chongzhi", $conn);
mysql_query("set names 'GBK'");
mysql_query("INSERT INTO `table` (`name`) VALUES ('$name');");//再mysql库里面变成"王红艳",怎么解决乱码
?>其中execl表:姓名
张龙
赵虎
不过刚刚查了一下浏览器的源代码,就是右键--查看源文件,发现也是乱码
<body>
王红艳
</body>//浏览器看正常,源文件不正常,怎么解决到底是什么原因,是不是excel那边需要什么编码的
这3个对应的中文“王红艳"
显示的话直接用PHP显示就可以了echo "王红艳";
例如这里使用
echo $name= $return[Sheet1][1][1];
来显示第2行第2列里面的内容,原本内容应该是“王红艳”,使用PHP在web上显示的时候也确实是“王红艳”,但是查看网页的源代码是王红艳
其中&#是为了在网页上显示,29579,32418和33395的十六进制表示则是“王红艳”的UTF-16LE编码。
那么我们需要做的就是将这个UTF-16LE编码转换为UTF-8编码。首先打开excel_class.php,找到函数uc2html,然后把function uc2html($str) {
$ret = '';
for( $i=0; $i<strlen($str)/2; $i++ ) {
$charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);
$ret .= '&#'.$charcode;
}return $ret;
}编码改成function uc2html($str) {
return mb_convert_encoding($str, 'GBK', 'UTF-16LE');}