UTF8-Codierung funktioniert nicht bei der Verwendung von ajax
Ich vor kurzem geändert, einige meiner Seiten angezeigt werden, die über ajax und ich bin mit einigen Verwirrung darüber, warum die utf8-Codierung ist jetzt mit einem Fragezeichen im inneren des Kastens, während es vorher nicht war.
Vordergrund Beispiel. Das oringal-Seite war index.php. charset wurde explizit auf utf8 eingestellt und ist in der <head>
. Ich habe dann verwendet php die Datenbank Abfragen
Hier ist das original index.php Seite:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Title here</title>
</head>
<body class='body_bgcolor' >
<div id="main_container">
<?php
Data displayed via php was simply a select statement that output the HTML.
?>
</div>
Allerdings, wenn ich die änderung vorgenommen, um ein Menü hinzuzufügen, bevölkerten die "main_container" per ajax alle die utf8-Codierung aufgehört zu arbeiten. Hier der neue code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Title here</title>
</head>
<body class='body_bgcolor' >
<a href="#" onclick="display_html('about_us');"> About Us </a>
<div id="main_container"></div>
Den "display_html ()" - Funktion ruft das javascript-Seite, die verwendet jquery-ajax-Aufruf zum abrufen der html-Lagerung innerhalb einer php-Seite, dann stellen Sie das html innerhalb des div mit der id "main_container". Ich bin die Einstellung des charset in jquery zu utf8 sein wie:
$.ajax({
async: false,
type: "GET",
url: url,
contentType: "charset=utf-8",
success: function(data)
{
$("#main_container").html(data);
}
});
Was mache ich falsch?
- ich denke, das ist eine Stückliste Byte Order Mark problem google.es/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Codierung ist mehr als das festlegen der meta-Tags und content-type - Dateien selbst müssen wirklich in der Codierung, die Sie angeben, oder Sie bekommen mojibake.
Überprüfen Sie, dass alles UTF-8, Datenbank, Datenbank-Verbindung, Tabellen-Spalten. Überprüfen Sie, dass alle statischen Dateien, die Sie sind, darunter auch UTF-8 kodiert.
"Cannot send session cache limiter - headers already sent"
aber ich wollte nicht ändern anderer code als speichern Sie die Datei als utf-8 und alles funktionierte bevor ich das Tat...nicht sicher, was Los ist. Vielen Dank für Eure Hilfe<?php
oder nach der?>
tag. Ich habe alle meine code und alle umfasst und immer noch das gleiche Ergebnis erhalten. Ich habe sogar entfernt jedes bit der code aus dem index.php Seite sah es auch so aus wie diese:<?php session_start(); ?>
...keine Leerzeichen vor oder nach...Nein auch die anderen Dateien, die ihn betreffen könnte, Wenn ich die Seite neu laden, bekomme ich die gleiche Fehlermeldung. ALLERDINGS habe ich beschlossen, speichern Sie die index.php Seite als ANSI -, und der Fehler ging Weg, aber die Codierung war nicht gut???http://people.w3.org/rishida/blog/?p=102
sagte, dass dreamweaver können diese entfernen. So, ich habe es versucht. Wie kann ich eigentlich wissen, wenn das Zeichen entfernt wird, wenn ich Sie nicht sehen können?éditez l'océan
Ausgabe im browser ist richtig, jedoch wenn ich mir den Wert in der Datenbank über phpmyadmin es anzeigt, wie dies in der gleichen browser:éditez l'océan
Ist das ein problem mit der DB?. Die Datenbank ist UTF8, für charset und collation utf8_general_ci. Alles ist die Anzeige ok, in der app, aber ich Frage mich nur, warum das so ist, oder dies wird zu Problemen führen hinunter die Straße...die ich würde viel lieber herausfinden, jetzt. Danke.Sie schrieb
Was meinst du mit "das html-Lagerung innerhalb einer php-Seite"? Wenn Sie möchten, um Daten zu laden und anzuzeigen, gibt es als enthalten von
<div>
die geladenen Daten zu formatieren-Korrespondent. Ich meine, dass es wirklich ein code-fragment von HTML. Außerdem Zusammen mit 'contentType' es wäre eine gute Idee, um anzugeben, 'dataType' als "html" oder "text". Wenn Sie nicht specity alles, was die Letzte version von jQuery wird "intelligent versuchen, die Ergebnisse zu erhalten, basierend auf dem MIME-Typ der Antwort". Wenn Sie wissen, die 'Datentyp', es wäre besser, geben Sie es. Und wenn Sie ajax verwenden, verwenden auch Standard', async: true,' und nicht 'falsch'.Sollten Sie auch überprüfen, ob
jQuery.load
- Methode (siehe http://api.jquery.com/load/) ist die beste Wahl für Sie. Sie können laden Sie mit dem mathod eine vollständige html-Seite, wenn erforderlich, und zeigen nur ein Teil dort:$('#main_container').load('ajax/about_us.html #container');
Und über UTF-8-Codierung vergessen Sie nicht, speichern Sie die Datei wirklich im UTF-8-kodiert. Verwenden der entsprechenden option in Ihrem editor (in Notepad, wählen Sie "Speichern unter" und dann wählen Sie als Zeichencodierung "UTF-8" und nicht "ANSI").
Stellen Sie sicher, dass alle Ihre Dateien werden gespeichert als UTF-8 (oder UTF-8-w -.o. Stückliste).
Wenn du Sie hochgeladen per FTP oder mit einem web-tool, überprüfen, ob Sie sind immer noch UTF-8.
In meinem Fall keine der Lösungen gearbeitet, bis ich platziert