Encoding MySQL, PHP en CSV-bestand

Ik heb een mysql-database met een aantal Chinese trefwoorden die ik moet vergelijken met sommige sleutelwoorden in een CSV-bestand met behulp van PHP.

Ik schijn een probleem te hebben met de codering, wanneer ik twee trefwoorden vergelijk die ik weet dat ze hetzelfde zijn (met Chinese karakters), zegt het script dat ze anders zijn.

Ik gebruik "SET NAMES utf8" aan het begin van het script voor de database. de sortering voor het sleutelwoordveld op de tafel is utf8_bin.

op het script dat ik ook heb gebruikt

mb_internal_encoding("UTF-8");
header('Content-Type: text/xml, charset=UTF-8; encoding=UTF-8');

ik heb het CSV-bestand gelezen met

    $data = fgetcsv($handle, 1000, ",")) !== FALSE

en mijn vergelijkingslijn is als volgt

    $database_keyword == CSV_keyword

met betrekking tot het CSV-bestand Ik heb notepad ++ gebruikt om te proberen de codering te wijzigen, maar werkte nog steeds niet.

hartelijk bedankt.

edit: ik ben op Windows 7

EDIT: OPLOSSING TOEVOEGEN het kan iemand daarbuiten helpen, ik ontdekte dat mijn probleem werd veroorzaakt doordat de stuklijst werd opgenomen in de strings uit de csv-bestanden. Ik heb het kunnen verwijderen met behulp van deze functie

    private function rmBOM($string) { 
        if(substr($string, 0,3) == pack('CCC',0xef,0xbb,0xbf)) { 
            $string=substr($string, 3); 
        } 
        return $string; 
    }
1

1 antwoord

Ik heb beperkte ervaring met Windows omdat ik meestal op Linux werk, maar ik heb gewerkt in integratieprojecten die verschillende charsets behandelen (coderingen).

  1. Zorg ervoor dat de databaseverbinding zich in de UTF-modus bevindt. Bekijk deze document .
  2. Zorg ervoor dat het csv-bestand zich in UTF bevindt. U kunt de conversie forceren met de functie iconv ().
0
toegevoegd
bedankt, ik zal het proberen.
toegevoegd de auteur Jon, de bron