项目原来是C#+MSSQL的,服务器是Win,国外的服务器,放在Godaddy上。现在要把数据导出来,因为PHP处理JSON比较方便就用PHP写了,但取出来的数据全部是乱码。很纠结啊,实在不想又用C#再写一次代码,小弟PHP新手,求教各位。
尝试网上诸多转码的代码,以失败告终,救命啊,实在不想再写一次代码,最关键的是,C#中还要处理JSON和保存文件,麻烦。
代码很简单,给出关键代码吧,没必要贴之么长了。
$conn=mssql_connect($sql_server,$sql_username,$sql_password) or die("无法连接到$server数据库!");
$db=mssql_select_db($sql_database,$conn) or die("无法打开数据 $database");//导出的代码
//echo "导出表:".$table.";第".$pageIndex."页;".$start."/".$end."</ br>";
$sql = 'SELECT * FROM (SELECT
ROW_NUMBER() OVER (ORDER BY '.$orderId.' ASC) AS RowNumber,
*
FROM
'.$table.') _myResults
WHERE
RowNumber between '.$start.' and '.$end;
if($test){
echo $sql;
}
//return;
$query = mssql_query($sql);
while($row = mssql_fetch_array($query))
{
for ($i = 0; $i < mssql_num_fields($query); ++$i) {
// Fetch the field information
$field = mssql_fetch_field($query, $i);
$value = $row[$field->name];
$type = $field->type;
if($type == "blob"){
$value = mssql_guid_string($value);
}else if($type == "datetime"){
//$value = "时间";
}
//$value = mb_convert_encoding($value, 'UTF-8','ascii,GB2312,gbk,UTF-8');
// Print the row
$data[$field->name] = $value;
//echo $field->name.">".$field->type."<br />";
}
$result[] = $data;
};
$content = json_encode($result);
if($output){
echo $content;
}else{
//保存到文件
file_put_contents($table."_".$pageIndex.".json", $content);
}
mssql_free_result($query);
尝试网上诸多转码的代码,以失败告终,救命啊,实在不想再写一次代码,最关键的是,C#中还要处理JSON和保存文件,麻烦。
代码很简单,给出关键代码吧,没必要贴之么长了。
$conn=mssql_connect($sql_server,$sql_username,$sql_password) or die("无法连接到$server数据库!");
$db=mssql_select_db($sql_database,$conn) or die("无法打开数据 $database");//导出的代码
//echo "导出表:".$table.";第".$pageIndex."页;".$start."/".$end."</ br>";
$sql = 'SELECT * FROM (SELECT
ROW_NUMBER() OVER (ORDER BY '.$orderId.' ASC) AS RowNumber,
*
FROM
'.$table.') _myResults
WHERE
RowNumber between '.$start.' and '.$end;
if($test){
echo $sql;
}
//return;
$query = mssql_query($sql);
while($row = mssql_fetch_array($query))
{
for ($i = 0; $i < mssql_num_fields($query); ++$i) {
// Fetch the field information
$field = mssql_fetch_field($query, $i);
$value = $row[$field->name];
$type = $field->type;
if($type == "blob"){
$value = mssql_guid_string($value);
}else if($type == "datetime"){
//$value = "时间";
}
//$value = mb_convert_encoding($value, 'UTF-8','ascii,GB2312,gbk,UTF-8');
// Print the row
$data[$field->name] = $value;
//echo $field->name.">".$field->type."<br />";
}
$result[] = $data;
};
$content = json_encode($result);
if($output){
echo $content;
}else{
//保存到文件
file_put_contents($table."_".$pageIndex.".json", $content);
}
mssql_free_result($query);
http://iove.net/archives/3065.html
贴出结果
如果 $result 较大,可以
echo base64_encode(serialize($result[0]));
只要有中文就行
试过不行啊,base64后再转回来还是乱码,中文全部是??。
循环读取的时候就已经是乱码了,这你个是把结果base64,没有什么意义啊。
求助各位PHP高手
我需要见到你为家处理的,直接冲数据库里读出设数据原来是C#+MSSQL的,C#能读出,就证明问题不是出在数据库
header('content-type:text/html;charset=gb2312');
再试试,然后不用对数据 做任何处理