Laravel 5 Zeichensatz funktioniert nicht korrekt in den Ansichten. Aber es funktioniert gut, wenn ich es vom Controller ablege

8

Ich stehe hier vor einem Zeichenproblem. Ich entwickle eine App, die eine SQL-Server-Datenbank verwendet. Die Datenbank wurde nicht für diese App erstellt, sie existiert davor und funktioniert sehr gut. Ich kann nichts an der Datenbank ändern, weil es zu groß ist und von vielen anderen Apps verwendet wird.
Ich habe die Authorisierung meiner Laravel 5 App abgeschlossen, also werde ich eine Ansicht erstellen und in dieser Ansicht den Namen des angemeldeten Benutzers anzeigen. Der Name lautet: ADMINISTRADOR DA ACENTUAÇÃO. Es verwendet einige Sonderzeichen.
In meinen Ansichten:

%Vor%

es zeigt:

  

ADMINISTRADOR DA ACENTUA O

Aber in meinem Controller, bevor ich die Ansicht zurückgebe, tat ich:

%Vor%

und es zeigt mir:

  

ADMINISTRADOR DA ACENTUAÇÃO

Ich versuche es jetzt in meiner View-Datei:

%Vor%

Und das funktioniert gut. Es zeigt mir:

  

ADMINISTRADOR DA ACENTUAÇÃO

Es macht mich glauben, dass der Fehler für etwas laravel passiert, nachdem die Ansichten geparst sind.

Ich weiß nicht, warum es gut funktioniert, wenn ich den Benutzernamen auf dem Controller, aber nicht funktioniert, wenn ich seinen Namen auf der Ansicht echote.

Darf mir jemand helfen, plz?

PS:

  • Meine Ansichtsdatei verwendet utf8 Zeichensatz
  • Ich habe versucht, mit und ohne HTML-Tags und Charset-Meta zu echo. Das Problem tritt in beiden Fällen auf
  • Ich habe versucht, meine View-Datei zu löschen und eine neue mit utf8-Zeichensatz zu erstellen. Es funktioniert nicht.
  • Ich habe versucht, <?php echo Auth::user()->name; ?> anstelle von Blade-Tags zu verwenden. Es funktioniert nicht.
Anderson Silva 22.05.2015, 14:20
quelle

4 Antworten

3

Ich habe dieses Problem mit dieser Antwort gelöst . Ich bin gerade in meinem AppServiceProvider gegangen und in Boot-Methode:

%Vor%

Ich weiß nicht, ob das der richtige Weg ist, aber es funktioniert für mich.

    
Anderson Silva 27.05.2015, 14:27
quelle
1

Im Allgemeinen hält sich das Leben an UTF-8 einfach.

Seien Sie sehr vorsichtig Kopieren und Einfügen von irgendwo anders in Ihrem Code - grundsätzlich immer durch Notepad ++ gehen und verwenden Sie seine Konvertierung in UTF-8 (ohne BOM) vor dem Kopieren und Einfügen in Ihren Code.

Erste Frage - wie kommen die Daten in Ihre Datenbank?

Mega Top Tipp Wenn Sie ein Formular verwenden, stellen Sie sicher, dass Sie das akzeptierte Zeichensatzattribut für das Formularelement festgelegt haben:

%Vor%

Stellen Sie dann sicher, dass alle Ihre Ansichten (einschließlich Fehlerseiten)

haben %Vor%

Oder Folgendes, wenn Sie HTML4 machen

%Vor%     
Dave Amphlett 27.05.2015 06:19
quelle
0

Da sich Erfolg und Fehlerreaktion nicht konsistent verhalten, kann der Unterschied in den HTTP-Headern liegen. Wenn das der Fall ist, geschieht es, dass Sqlserver und Ihr Browser die gleiche Kodierung benutzen, wahrscheinlich einige Windows-Standard, wie cp1252, während Laravel konfiguriert ist, um mit einem anderen Zeichensatz als dem in der Datenbank verwendeten zu antworten.

Überprüfen Sie den HTTP-Header content-type sowohl beim Aufruf der Ansicht als auch beim Sterben () - wenn dies Ihr Problem ist, konfigurieren Sie Laravel, um einen Header zu senden, der mit Ihren Vorlagen und Ihrer Datenbankkodierung (oder natürlich! explizit transkodieren) übereinstimmt wenn nötig)

    
Raffaele 23.05.2015 05:34
quelle
0

Ich habe versehentlich meine UTF-8 codierte Datei in einem anderen Texteditor geöffnet und gespeichert. Es hat jedoch automatisch meine UTF-8 -Datei als ANSII gespeichert. Also muss ich die Datei erneut öffnen und die Datei als UTF-8 encoded speichern.

    
Fusion 03.08.2016 10:27
quelle