Laravel 4 + Blade, but MySQL is not encoded in UTF-8

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17528385/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 08:06:36  来源:igfitidea点击:

Laravel 4 + Blade, but MySQL is not encoded in UTF-8

mysqlcharacter-encodingpdolaravellaravel-4

提问by Slava V

We are developing a new site against a legacy database with Laravel 4.

We are developing a new site against a legacy database with Laravel 4.

The database is read-only and we can't convert it.

The database is read-only and we can't convert it.

We have

We have

'charset' => 'cp1251'

in the connection, but when we try to output a string via Blade, we get

in the connection, but when we try to output a string via Blade, we get

htmlentities(): Invalid multibyte sequence in argument

Digging deeper we see that:

Digging deeper we see that:

{{{ $shopProduct->product->sname }}}

compiles to:

compiles to:

<h2><?php echo e($shopProduct->product->sname); ?></h2>

where

where

function e($value)
{
    return htmlentities($value, ENT_QUOTES, 'UTF-8', false);
}

Is there a way to make either Eloquentor PDOto get non-UTF-8 encoding (cp1251) from MySQL and actually get to use UTF-8in models?

Is there a way to make either Eloquentor PDOto get non-UTF-8 encoding (cp1251) from MySQL and actually get to use UTF-8in models?

Note: we can't change database encoding on server - it's beyond our control.

Note: we can't change database encoding on server - it's beyond our control.

回答by thestepafter

Set the charset to utf8.

Set the charset to utf8.

'charset' => 'utf8'