Laravel Dingo API не возвращает символы в кодировке UTF8 - PullRequest
0 голосов
/ 08 января 2019

Я только что унаследовал проект в Laravel, и он использует Dingo API. API возвращает строки типа Federaci\u00f3n вместо Federación.

Все строки правильно закодированы в UTF-8 в базе данных, поэтому проблема в сервере.

Контроллер возвращает $this->response->paginator($articles, new ArticlesCollectionTransformer); и внутри ArticlesCollectionTransformer Я поместил var_dump для строк, с которыми у меня проблемы, и они там правильно закодированы.

Куда еще мне обратиться? Что мне не хватает?

Контроллер:

 public function index(Request $request)
    {
        $limit = (0 === (int)$request->limit || $request->limit > self::PER_PAGE) ? self::PER_PAGE : $request->limit;

        $articles = Article::with('author', 'category')
            ->approved()
            ->orderBy('published_at', 'desc')
            ->orderBy('featured', 'desc')
            ->paginate($limit);

        return $this->
               response->
               paginator($articles, new ArticlesCollectionTransformer)->
               // also tried: 
               // withHeader('Content-type', 'application/json; charset=utf-8');
    }

Transformer

    class ArticlesCollectionTransformer extends TransformerAbstract
{
    public function transform (Article $article)
    {
        // var_dump($article->title) ==> is correctly encoded
        return [
            'id' => (int) $article->id,
            'category' => $article->category->name,
            'author' => $article->author->name ?? ArticleAuthor::DEFAULT_AUTHOR_FOR_NEW_ARTICLES,
            'display_order' => (int) $article->display_order,
            'title' => $article->title,
            'featured' => (bool) $article->featured,
            'viewed_times' => (int) $article->viewed_times,
            'last_update' => $article->updated_at->timestamp,
        ];
    }
}

Подробнее:

  • Laravel: 5.2.*
  • Динго / API: 1.0.x@dev
...