2016-07-09 9 views
0

Mein Chef mit zwingt mich einen Zugang mdb-Datenbank zu verwenden (ja, ich bin ernst) in einem PHP-Server. Ich kann es verbinden und Daten davon abrufen, aber wie Sie sich vorstellen können, habe ich Probleme mit Codierungen, weil ich mit utf8 arbeiten möchte.Probleme mit Sonderzeichen codiert, mit einer Zugriffs mdb Datenbank php

Die Sache ist, dass ich jetzt zwei "Lösungen" habe Windows-1252 auf UTF-8

Dies ist der erste Weg zu übersetzen:

mb_convert_encoding($string, "UTF-8", "Windows-1252").

Es funktioniert, aber das Problem ist, dass spezielle Zeichen nicht richtig konvertiert werden, zum Beispiel char º wird in \u00ba konvertiert und char Ó wird in \ u00d3 konvertiert.

Mein zweiter Weg, dies tut:

mb_convert_encoding(mb_convert_encoding($string, "UTF-8", "Windows-1252"), "HTML-ENTITIES", "UTF-8") 

Es funktioniert auch, aber es passiert das gleiche, Sonderzeichen werden nicht korrekt umgesetzt. Char º umgewandelt wird º

Weiß jemand, wie man richtig Codierung ändern, einschließlich Sonderzeichen? Oder weiß jemand, wie man von º und \u00ba in etwas lesbares umwandelt?

+1

Überprüfen Sie die zugehörige Antwort out [hier] (http://stackoverflow.com/a/28341697/2144390). Beachten Sie jedoch, dass es immer * einige * Kompatibilitätsprobleme geben wird, wenn Sie PHP + Access + Unicode verwenden (z. B. können beliebige Unicode-Parameterwerte in SQL-Abfragen nicht verwendet werden), damit Ihr Chef sein Edikt überdenken kann re: Verwenden dieser Kombination von Technologien. –

Antwort

0

ich endlich die Lösung gefunden zu konvertieren. Ich hatte die Lösung von Anfang an, aber ich machte meine Tests falsch.

Mein schlechtes.

Der richtige Weg, es zu tun für mich ist mb_convert_encoding($string, "UTF-8", "Windows-1252")

aber ich war das Ergebnis wie folgt überprüft:

$stringUTF8 = mb_convert_encoding($string, "UTF-8", "Windows-1252"); 
echo json_encode($stringUTF8); 

, die, warum es wurde Unicode-Zeichen wie \u20ac Rückkehr, wenn ich es getan hätte:

$stringUTF8 = mb_convert_encoding($string, "UTF-8", "Windows-1252"); 
echo $stringUTF8; 

Ich hätte die Lösung von Anfang an gesehen, aber ich lag falsch. Es war json_encode(), was spezielle Zeichen in Unicode-Zeichen verwandelte.

Vielen Dank für Ihre Hilfe !!

0

Ich habe einfachen Test Codepunkt Buchstaben

<?php 
function codepoint_decode($str) { 
    return json_decode(sprintf('"%s"', $str)); 
} 

$string_with_codepoint = "Ahed \u00d3\u00ba\u00d3"; 
// $string_with_codepoint = mb_convert_encoding($string, "UTF-8", "Windows-1252"); 
$output = codepoint_decode($string_with_codepoint); 
echo $output; // Ahed ÓºÓ 

Kredit geht für diesen answer