我是laravel框架的新手。我使用Homestead作爲我的開發環境,一切正常。問題是我將波斯語言記錄插入到mysql數據庫中,當我在某些視圖中返回它們時,波斯語字符會變得亂碼(例如「آذرشهر」返回爲「\ u0622 \ u0630 \ u0631 \ u0634 \ u0647 \ u0631」)。 在使用laravel之前,我有一個使用mysqli_set_charset解決的simillar問題。我以前的代碼是這樣的:laravel 5.1從mysql中刪除亂碼charachers
class MySQLDatabase {
private $connection;
public function __construct(){
$this->openConnection();
mysqli_set_charset($this->connection, 'utf8');
}
public function openConnection(){
$this->connection=mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
if(mysqli_connect_errno()){
die("Database connection failed:" .
mysqli_connect_error().
"(". mysqli_connect_errno().")"
);
}
}
我laravel數據庫配置文件是這樣的:
'default' => env('DB_CONNECTION', 'mysql'),
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
和.ENV文件是這樣的:
APP_ENV=local
APP_DEBUG=true
APP_KEY=XXXXXXXX
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
我怎樣才能解決這個問題問題?
這是一個視圖:
@extends('app')
@section('content')
<h1>شهر</h1>
@foreach($cities as $city)
{{ $city }}
@endforeach
@stop
,將所得物體是這樣的:
{ 「ID」:402, 「城市」:「\ u0622 \ u0630 \ u0631 \ u0634 \ u0647 \ u0631「,」province_id「:1,」created_at「:」 - 0001-11-30 00:00:00「,」updated_at「:」 - 0001-11-30 00:00:00「}
將字符集設置爲utf8是在PDO中您的laravel配置文件如上所示,這就是'mysqli_set_charset'的等價物。你工作的舊字符集是utf8嗎? – prograhammer
是的。在我的舊代碼中,我使用'mysqli_set_charset'將字符集設置爲utf8 –
這就像我添加到問題 –