2016-10-09 1 views
0

Ich habe mit dieser Zeit gekämpft. Ich konnte es nicht zur Arbeit bringen.Probleme mit schwedischen Buchstaben MySQL und LAMP

Auf der URL http://course.easec.se/problem.pdf habe ich zusammengestellt, was ich bisher gemacht habe!

Irgendwelche Vorschläge?

<?php 
header('Content-Type: text/html; charset=ISO-8859-1'); //no changes 
$servername = "localhost"; 
$username = "root"; 
$password = "password"; 
$dbname = "db_test4"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
mysqli_set_charset("utf8"); 
echo "From PHP Script ååååå\n"; //to see if there is problem when edit the script 
$sql = "SELECT * FROM test_tbl"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 

     echo "Kundid: " . $row["kund_id"]. " - Förnamn: " . $row["fnamn"]. " - Efternamn: " . $row["enamn"]. " - Adress:" . $row["adress1"] ."<br>"; 
    } 
} else { 
    echo "0 results"; 
} 
$conn->close(); 
?> 

Auftraggeber:

Client

es jetzt funktioniert, scheint mein Redakteur do zu sein, wenn ich ANSI versucht, anstelle von UTF-8 und ändert die Kopfzeile zu!

enter image description here

+2

Dies ist keine akzeptable Frage. Bitte formatieren Sie es und fügen Sie alle relevanten Informationen direkt in die Frage ein. Diese PDF kann (und wird wahrscheinlich) irgendwann brechen. –

+0

Wenn Sie UTF von der Datenbank erhalten/ausgeben, warum sagen Sie dem Browser, dass er mit iso8859 Text rechnet? "Ich werde dir eine Banane schicken" und dann eine Wassermelone werfen. –

Antwort

0

Verwendung: header('Content-Type: text/html; charset=ISO-8859-1');

Statt: header('Content-type: text/html; charset=utf-8');

Keine Notwendigkeit, innerhalb while-Schleife, etwas Gebrauch oben auf der Seite vor dem Ausdruck zu verwenden.

+0

Keine Änderungen, sorry!/Mats –

+0

Versuchen Sie es erneut, indem Sie mysqli_set_charset ("utf8") entfernen; 'wenn nicht, versuchen Sie es erneut mit mysqli_set_charset ($ conn, 'ISO-8859-1');' – AHJeebon

+0

Das gleiche Ergebnis. –

3

Direkt unter

$conn = new mysqli($servername, $username, $password, $dbname);

hinzufügen

$conn->set_charset("utf8");

Hinweis: Zusätzlich sollten Sie auch darauf achten, dass die charset Ihrer HTML (im <head>-Tag) gesetzt zu utf-8, wie <meta charset="utf-8">

+0

fast, das sollte 'utf8mb4' sein – Martin

+0

@Martin Ich denke nicht - die grundlegenden Buchstaben von Sprachen wie Schwedisch, Deutsch usw. (zumindest alle westeuropäischen) sind alle in utf8 enthalten, und das ist, was das OP braucht – Johannes

+0

Es ist mehr durch Glück, dass der OP-Inhalt in diesem Fall immer noch funktioniert, aber "utf8" sollte nicht unterstützt werden, da es nur 3 Bits ist. Warum ein Drittel eines Zeichensatzes anbieten, wenn der volle Zeichensatz angeboten werden kann? – Martin

0

Ich mag, wie Sie Ihre Frage in einem PDF, etwas original :-D setzen. Nun wird die Antwort auf Ihr Problem found here sein. Lesen Sie die ganze Frage und so viele Antworten wie möglich.

dann als letzte Bemühung ich ändere Editor zu ANSI anstelle von UTF-8 dann funktioniert es!

Aufgrund dies das Problem ist, Ihre internen PHP-Skript Codierung so Reaseach mit PHP Multibyte String und Einstellung Ihrer PHP-Code:

<?php 
mb_internal_encoding('UTF-8'); //this is the important one! 
mb_http_output('UTF-8'); 
mb_http_input('UTF-8'); 

Ihre PHP-Code, um sicherzustellen, ist auch UTF-8 complient wenn sie ausgeführt werden. Sie können (oder sollten) auch die Einstellungen in Ihrem IDE-Editor bearbeiten können, um PHP-Dateien ohne UTF-8-BOM (Byte Order Mark) zu speichern, wodurch dieses Problem ebenfalls gelöst und als UTF-8 für andere Dienste verständlich gespeichert wird.


Zusätzliche Hinweise (cos I über MySQL UTF-8 stöhnen mögen):

MySQL UTF-8 ist nicht die volle UTF-8. Die Lösungen werden im verlinkten Thread oben, einige allgemeine Ergänzungen angeboten:

  • 1) Sie wollen immer UTF8mb4 verwenden (und idealerweise _unicode_ci).

  • 2) Im endgültigen Screenshot Ihrer PDF sollten Sie so viele davon wie möglich auf utf8mb4_unicode_ci setzen.

  • 3) Einstellen der Verbindung Zeichensatz ist von entscheidender Bedeutung, auch wenn der Server und der Client verwenden beide utf8mb4, wenn die Verbindung nur utf-8 ist es alles andere bis zu diesem Tiefpunkt bringt.

  • 4) Empfehlung:

    header('Content-Type: text/html; charset=UTF-8'); //UTF-8 
    

Nur MySQL UTF-8 ist gebrochen, andere implementatios es ist nicht und ist perfekt geeignet als und wird im Allgemeinen als HTML-Standard angesehen.

Verwandte Themen