2016-07-12 16 views
-1

Ich habe eine CSV-Datei, die koreanische Zeichen enthält, die in Oracle-Datenbank geschrieben werden müssen.PHP liest keine koreanischen Zeichen aus CSV

Als ich die CSV mit ‚fgetcsv‘ lesen sehe ich nicht die koreanischen Zeichen stattdessen sieht es so aus:

(image)

Mein PHP-Datei-Header wird auf „UTF-8“ und den db NLS_CHARACTERSET = AL32UTF8.

Wie löse ich das?

+0

Was meinen Sie mit * "wenn ich die CSV lese" *? Lesen zeigt normalerweise nichts, also wie siehst du, was du liest? – Phil

+0

Dies ist immer lesenswert zu ~ http://stackoverflow.com/questions/279170/how-to-support-utf-8-completely-in-a-web-application (ignorieren Sie die DB-Teile) – Phil

+0

Ich habe das verwendet Code, um die CSV-Datei zu lesen und nur sie 'drucken code' while (($ data = fgetcsv ($ handle, $ Trennzeichen))! == FALSE) { \t Hier i den Wert am drucken } –

Antwort

1

(Veröffentlicht im Namen des OP).

Ihre PHP-Seite sollte als UTF-8-Zeichensatz gerendert werden, um das koreanische (in meinem Fall) Zeichen für die mb_string Variablen anzuzeigen, muss wie folgt UTF-8 gesetzt werden.

 mb_internal_encoding('UTF-8'); 
     mb_http_output('UTF-8'); 
     mb_http_input('UTF-8'); 
     mb_language('uni'); 
     mb_regex_encoding('UTF-8'); 
     ob_start('mb_output_handler'); 

und dann sollte es eine Umgebungsvariable sein muss gesetzt werden, wie folgt:

 PutEnv("NLS_LANG=AMERICAN_AMERICA.AL32UTF8"); 

schließlich die Zeichenfolge in UTF-8 konvertieren mit mb_convert_encoding:

 mb_convert_encoding($str, "UTF-8", "EUC-KR"); 

wir sind fertig .

+0

Diese Antwort funktionierte gut für meine eigene Antwort, wo ich Probleme hatte, einige koreanische Zeichen anzuzeigen (http://stackoverflow.com/a/40427921/3298930). –