Преобразование в UTF8 в проекте Laravel не работает

Я запускаю эту строку кода.

$string = convert_case('MONTAÑA 221');

public function convert_case($string)
{
    $string = mb_convert_case($string, MB_CASE_TITLE, "UTF-8");

    return $string;
}

Когда я запускаю его в laravel, я получаю пустую строку, но когда я запускаю ее в браузере, используя простой файл test.php поверх wamp, я получаю правильную строку.

2 ответа

Я уже сталкивался с подобными проблемами, и, возможно, у вас они другие, но вам может пригодиться настройка кодировки HTML-страницы.

В шапке:

<meta charset="utf-8" /> 

Чтобы ответить на ваш вопрос на основе кода, который вы разместили:

                             $string = 'MONTAÑA 221';
                                |
                                v
public function convert_case($string)
{   
    $string = html_entity_decode($input,ENT_COMPAT,"UTF-8");

    $oldLocale = setlocale(LC_CTYPE, '0');  

    setlocale(LC_CTYPE, 'en_US.UTF-8');
    $string = iconv("UTF-8","ASCII//TRANSLIT",$string);

    setlocale(LC_CTYPE, $oldLocale);

    return strtolower(preg_replace('/[^a-zA-Z0-9]+/','',$string));
}

Выход:

montana221

Код в пространстве, где вы чувствуете, что они нужны. Этот код предназначен для работы на сервере. Используя HTML:

<meta charset="utf-8">

Может быть причина того, что он правильно выходит на интерфейс.

Другие вопросы по тегам