Laravel 5-charset nicht richtig auf die Ansichten. Aber es funktioniert gut, wenn ich dump es von der Steuerung
Ich bin vor ein charset-problem hier. Ich entwickle eine app, die verwendet eine sql server-Datenbank. Die Datenbank wurde nicht erstellt, für diese app, es existiert, bevor es und funktioniert sehr gut. Ich kann es nicht ändern, alles auf der Datenbank, weil seine zu groß und seine von vielen anderen apps.
Ich habe fertig die auth von meinem laravel 5 app, also werde ich eine Ansicht erstellen, und zeigen Sie in dieser Ansicht den Namen der angemeldeten Benutzer. Der name: ADMINISTRADOR DA ACENTUAÇÃO. Es verwenden einige Sonderzeichen.
In meinen Ansichten:
{!!Auth::user()->name!!}
zeigt es:
ADMINISTRADOR DA ACENTUA��O
Aber in meinem controller, bevor ich wieder der Ansicht, ich habe:
die(\Auth::user()->name);
und es zeigt mir:
ADMINISTRADOR DA ACENTUAÇÃO
Ich versuche das jetzt in meine Datei anzeigen:
{!!Auth::user()->name!!}
<?php die();
Und dies funktioniert gut. Es zeigt mir:
ADMINISTRADOR DA ACENTUAÇÃO
Es macht mich glauben, dass der Fehler aufgetreten ist, für etwas zu laravel hat, nachdem die Ansichten analysiert werden.
Ich weiß nicht, warum es funktioniert gut, wenn ich sterbe, den Benutzernamen auf dem controller, aber nicht funktioniert, wenn ich echo seinen Namen auf die Ansicht.
Kann mir jemand helfen plz?
PS:
- Meine view-Datei ist mit utf8-Zeichensatz
- Ich versuchte echo mit und ohne html-tags und meta charset. Das problem aufgetreten ist in beiden Fällen
- Habe ich versucht zu löschen, meiner Ansicht Datei und erstellen Sie eine neue mit utf8-Zeichensatz. Es funktioniert nicht.
- Ich habe
<?php echo Auth::user()->name; ?>
statt blade-tags. Es funktioniert nicht.
- Überprüfen Sie die Kodierung Ihrer Dateien anzeigen, und versuchen Sie zu konvertieren mit einem tool wie Notepad++, nach der Sicherung eine backup-zuerst natürlich. Es könnte die IDE, die das problem verursacht, konfigurieren Sie Ihre ide, um Ihre Dateien zu speichern mit UTF-8-Codierung. Einige andere Gründe könnten sein, Ihre server-Konfiguration oder-noch schlimmer-Ihre Datenbank.
- Ich habe versucht, meine konvertieren view-Dateien, die ich versuchte, selbst zu löschen und eine neue view-Datei mit dem utf8-Zeichensatz. Aber es funktioniert nicht.
- Was deine DB hat als charset? Meta tag-set in der Ansicht?
- Seine gleichgültig. Ich habe versucht, mit einem Blick, ohne jeden tag, nur den text. Wenn ich einen Würfel nach dem echo, das es funktioniert, aber wenn ich nur das echo, das es nicht funktioniert. Ich denke, die verursacht wird durch etwas, was Laravel hat nach Ansicht gerendert wird
- Der beste Weg, um zu überprüfen, was passiert ist, zu überprüfen, was ist die Codierung der Zeichenfolge mit
mb_detect_encoding($str)
, Stellen Sie sicher, dass es UTF8. Beachten Sie auch, dassdie()
undecho
könnten unterschiedliche Verhaltensweisen. Ich erinnere mich, dass an einem Punkt, als ichdie
wurden die Inhalte korrekt gedruckt in der browser aber nur, weil die browser das verwalten der Konvertierung. Ein nicht-so-gut-fix ist, etwas zu verwenden, konvertieren Sie Ihre Saiten auf UTF8 (überprüfen Sie diese Antwort) - Ich versuchte jetzt:
{!!mb_detect_encoding(Auth::user()->nomePessoa).' - '.Auth::user()->nomePessoa!!}
aber es zeigt mir: UTF-8 - ADMINISTRADOR DA ACENTUA��O - Es ist eine lange gedreht, aber versuchen Sie daran vorbei
{{ Auth::user()->name }}
- Wenn ich versuche zu entkommen, der string wird nicht gezeigt. Ändere ich den charset für meine Ansicht iso-8859-15 und es funktionierte gut, wenn ich die echo-Zeichenfolge ohne Umschreibung. Aber wenn ich jetzt echo-Escape-string, ist es nicht zeigte... (nur wenn es Besondere chars)
- Haben Sie versucht, es in verschiedenen Browsern? Auch gibt es spezielle Zeichen, die später in der view, die den browser dazu zwingt, einen anderen Zeichensatz verwenden? Vielleicht ein Apostroph geben Sie auf einem Mac, oder sowas?
- Ja, ich versuchte. Ändere ich den Zeichensatz des Dokuments auf windows-1252, und es funktioniert perfekt, wenn ich mit echo die variable ohne Flucht es funktioniert perfekt, aber wenn ich die Flucht vor dem echo, das es nicht angezeigt wird. Jetzt muss ich verändern das Verhalten der Klinge escape-Funktion.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Löste ich dieses Problem mit diese aswer. Habe ich nur ging in mein AppServiceProvider und in die boot-Methode:
Ich weiß nicht, ob dies der richtige Weg, es zu tun, aber es funktioniert für mich.
??
FragezeichenIn der Regel kleben auf UTF-8 hält das Leben einfach.
Super vorsichtig, kopieren und einfügen von einer beliebigen anderen Stelle in Ihrem code - im Grunde immer über Notepad++ und die Nutzung Ihrer konvertiere zu UTF-8 (ohne BOM) vor dem kopieren und einfügen in Ihren code.
Erste Frage - wie werden die Daten immer in der Datenbank?
Mega-Top-Tipp
Wenn Sie ein Formular, stellen Sie sicher, Sie haben die akzeptierten charset-Attribut für das form-element:
Dann stellen Sie sicher, dass alle Ansichten (einschließlich Fehler-Seiten), haben
Oder den folgenden, wenn Sie HTML4
Seit erfolgreich und Fehler Reaktion Verhalten sich nicht konstant, kann die Differenz in den HTTP-Headern. Wenn das der Fall ist, was passiert, ist, dass SQL-Server und Ihrem browser verwenden die gleiche Codierung, wahrscheinlich einige Windows-Standard, wie cp1252, während Laravel konfiguriert ist, um zu reagieren, mit einem anderen charset als die, die in der Datenbank verwendet.
Überprüfen Sie den HTTP-header content-type, sowohl bei der Sie berufen sich auf die Sicht und wenn Sie die() - wenn das Ihr Problem ist konfigurieren Laravel senden header, stimmt mit Ihren Vorlagen und Datenbank-Kodierung (oder natürlich! transcode ausdrücklich, wenn erforderlich)
Ich versehentlich öffnete meine
UTF-8
codierte Datei in einen anderen text-editor und gespeichert. Jedoch, wird es automatisch gespeichert meinUTF-8
Datei alsANSII
. Also ich habe die Datei erneut öffnen und speichern Sie die Datei alsUTF-8
codiert.