2017-10-12 72 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