Здесь я столкнулся с проблемой кодировки. Я разрабатываю приложение, которое использует базу данных SQL Server. База данных не была создана для этого приложения, она существует и работает очень хорошо. Я ничего не могу изменить в базе данных, потому что он слишком велик и используется многими другими приложениями.
Я закончил auth моего приложения laravel 5, поэтому я создам представление и покажу в этом представлении имя зарегистрированного пользователя. Название: ADMINISTRADOR DA ACENTUAÇÃO. Он использует некоторые специальные символы.
В моих взглядах:
{!!Auth::user()->name!!}
это показывает:
ADMINISTRADOR DA ACENTUA O
Но в моем контроллере, прежде чем я вернусь, я сделал:
die(\Auth::user()->name);
и это показывает мне:
АДМИНИСТРАДОР Д.А. АКТУНУА
Я пытаюсь сделать это в моем файле:
{!!Auth::user()->name!!} <?php die();
И это прекрасно работает. Это показывает мне:
АДМИНИСТРАДОР Д.А. АКТУНУА
Это заставляет меня поверить, что ошибка occours для чего-то laravel делает после разбора взглядов.
Я не знаю, почему это работает хорошо, когда я умираю от имени пользователя на контроллере, но не работает, когда я повторяю его имя в представлении.
Может кто-нибудь мне помочь?
PS:
<?php echo Auth::user()->name; ?>
<?php echo Auth::user()->name; ?>
вместо ярлыков. Это не работает. Я решил эту проблему, используя этот aswer . Я только что зашел в свой AppServiceProvider и применил метод загрузки:
Blade::setEchoFormat('e(utf8_encode(%s))');
Я не знаю, правильно ли это делается, но это работает для меня.
Как правило, придерживаясь UTF-8, жизнь остается простой.
Будьте очень осторожным копированием и вставкой из любого места в свой код – в основном всегда используйте Notepad ++ и используйте его преобразование в UTF-8 (без спецификации) перед копированием и вставкой в свой код.
Первый вопрос – как данные попадают в вашу базу данных?
Mega Top Tip Если вы используете форму, убедитесь, что вы установили признанный атрибут charset в элементе формы:
<form accept-charset="UTF-8"
Затем убедитесь, что все ваши представления (включая страницы с ошибками) имеют
<meta charset="UTF-8">
Или следующее, если вы делаете HTML4
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
Поскольку успешные и ответные действия не ведут себя последовательно, разница может быть в заголовках HTTP. Если это так, то происходит то, что Sqlserver и ваш браузер используют одну и ту же кодировку, вероятно, некоторые по умолчанию Windows, такие как cp1252, в то время как Laravel настроен на ответ другой кодировкой, чем та, что используется в базе данных.
Проверьте тип содержимого заголовка HTTP как при вызове представления, так и при его смерти () – если это ваша проблема, настройте Laravel на отправку некоторого заголовка, который согласуется с вашими шаблонами и вашей кодировкой базы данных (или, конечно же, перекодировать в случае необходимости)
Я случайно открыл свой кодированный UTF-8
файл в другом текстовом редакторе и сохранил его. Однако он автоматически сохранил мой файл UTF-8
как ANSII
. Поэтому мне пришлось снова открыть файл и сохранить файл в UTF-8
.