2017-10-12 71 views
0

我的程序(WebAPI)在Laravel中遇到了一個大問題。Laravel收集重音錯誤

首先,這是軟件的配置:

  • Laravel框架5.4.30

  • SQL Server 2012的


我試圖返回的一個JSON表「學生」,但是當Json字段包含重音時,這個Json返回了錯誤,例如José 」。當它不包含重音時,Json返回所有行,例如'Maria'

當我在名稱字段的值之前意識到一個字母時,我看到收集的信息。

class StudentsController extends Controller 
 
{ 
 
    public function index(Request $request){ 
 

 
     $class = $request['class']; 
 

 
     $return = DB::table('students') 
 
     ->where("class", $class) 
 
     ->get(); 
 
     
 
     dd($return); 
 
     
 
     return json_encode($return); 
 
     
 
    } 
 

 
}

這個結果沒有accentuations:

Collection {#289 
 
    #items: array:1 [ 
 
    0 => {#284 
 
     +"id": "2" 
 
     +"name": "Maria" 
 
     +"class": "B" 
 
    } 
 
    ] 
 
}

轉換成JSON:return json_encode($return);,回報:

[{"id":"2","name":"Maria","class":"B"}] 

但是...當結果有accentuations:

Collection {#289 
 
    #items: array:1 [ 
 
    0 => {#284 
 
     +"id": "1" 
 
     +"name": b"José" 
 
     +"class": "A" 
 
    } 
 
    ] 
 
}

修復信「B」前值。

轉換爲JSON(return json_encode($return);),返回: Json whith problem

這是對文件連接的配置 「/config/database.php」

'sqlsrv' => [ 
      'driver' => 'sqlsrv', 
      'host' => env('DB_HOST'), 
      'port' => env('DB_PORT'), 
      'database' => env('DB_DATABASE'), 
      'username' => env('DB_USERNAME'), 
      'password' => env('DB_PASSWORD'), 
      'charset' => 'utf8mb4', 
      'collation' => 'utf8mb4_unicode_ci', 
      'prefix' => '', 
     ] 

幫幫我! !

+0

嘗試通過iconv函數運行字符串,看看是否有幫助https://secure.php.net/manual/en/function.iconv.php –

回答

0

有一種簡單的方法實現這一點,而不是返回json_encode嘗試返回一個集合。

class StudentsController extends Controller 
{ 
    public function index(Request $request){ 

    $class = $request['class']; 

    $return = DB::table('students') 
    ->where("class", $class) 
    ->get(); 


    return $return; 

    } 
} 

它會按預期返回結果。

+0

你好!郵遞員返回:響應內容必須是實現了__toString(),「布爾」給定的字符串或對象。 – Leonardo