Charset error

Discussion in 'PHP' started by krasi_e_d, Mar 26, 2012.

  1. #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:
    
    <html> <head>  <meta  http-equiv="Content-Type" content="text/html;charset=cp1251_general_ci" /> </head> <body> <?php $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());               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);            $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_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";   ?> </body> </html>
    
    PHP:
     
    Last edited: Mar 26, 2012
    krasi_e_d, Mar 26, 2012 IP
  2. Alex Roxon

    Alex Roxon Active Member

    Messages:
    424
    Likes Received:
    11
    Best Answers:
    7
    Trophy Points:
    80
    #2
    I'm assuming that charset is Chinese? Either way, for the best results you should probably use UTF8 as much as you can.
     
    Alex Roxon, Mar 26, 2012 IP