Charset error


#1

Hello, guys

I have a problem with charset. When I start my code from browser the data in my table is ???, but when I paste the output file in phpadmin everything is ok.
Please, guys help

this is my code:
[php]

<?php header("Content-Type: text/xml; charset=cp1251_general_ci"); $databasehost = "localhost"; $databasename = "export_ajur"; $databasetable = "invoice"; $databaseusername ="root"; $databasepassword = "password"; $fieldseparator = ","; $lineseparator = "\n"; $csvfile = "1.csv";

$addauto = 0;

$save = 1;
$outputfile = “output.sql”;
if(!file_exists($csvfile)) {
echo “File not found. Make sure you specified the correct path.\n”;
exit;
}
$file = fopen($csvfile,“r”);

if(!$file) {
echo “Error opening data file.\n”;
exit;
}

$size = filesize($csvfile);

if(!$size) {
echo “File is empty.\n”;
exit;
}

$csvcontent = fread($file,$size);

fclose($file);

$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());

@mysql_select_db($databasename) or die(mysql_error());

$lines = 0;
$queries = “”;
$linearray = array();

foreach(explode($lineseparator,$csvcontent) as $line) {

$lines++;

$line = trim($line," \t");

$line = str_replace("\r","",$line);

$linearray = explode($fieldseparator,$line);

$linemysql = implode("’,’",$linearray);

if($addauto)

  $query = "insert into $databasetable values('$linemysql');";

else
$query = “insert into $databasetable values (’$linemysql’);”;

$queries .= $query . “\n”;

@mysql_query($query);
}
mysql_query(“set names ‘cp1251_general_ci’”,$con);
mysql_query(“SET character_set_client=cp1251_general_ci”, $con);
mysql_query(“SET character_set_connection=cp1251_general_ci”, $con);
mysql_query(“SET character_set_results=cp1251_general_ci”, $con);
@mysql_close($con);

if($save) {

if(!is_writable($outputfile)) {
	echo "File is not writable, check permissions.\n";
}

else {
	$file2 = fopen($outputfile,"w");
	
	if(!$file2) {
		echo "Error writing to the output file.\n";
	}
	else {
		fwrite($file2,$queries);
		fclose($file2);
	}
}

}

echo “Found a total of $lines records in this csv file.\n”;

?>

[/php]

#2

I think the header should come before any markup has been sent to the browser I’ve put it at the very top of the file.

[php]

<?php header("Content-Type: text/xml; charset=cp1251_general_ci"); ?> [/php]

#3

Thank your replay.

I changed,but nothing.


#4

I’m confused why your setting a header to text/xml when the page is rending html and not xml?


#5

I changed this now is hmtl.