Impossible d'afficher les caractères accentués (PHP et SQL serveur)

dinjer Messages postés 43 Statut Membre -  
dinjer Messages postés 43 Statut Membre -
Bonjour,

je développe une application web connectée à sql serveur. En local ( WAMP PHP7.3, SQL serveur et Windows 10)les informations récupérées
de la bd sql serveur s'affichent normalement, comme le montre la capture ci-dessous.



mais quand je passe en production les textes contenant des caractères accentués ne s'affichent pas. voir
la figure ci-dessous.



les points d'exclamation indique le texte manquant.

Configuration en production: PHP 7.3; SQL serveur 2017; Apache 2.4; Laravel 5.4, OS Linux DEBIAN 9
VOICI le code
@extends('layouts.app')

@section('content')

<br>
<h1 class="text-center text-white" style="background-color: #ffbb33">Repertoire des procédures de travail</h1>
<br>
<div class="form-group mb-2">
<form action="{{url('fenetre/procedure')}}" method="post">
{{ csrf_field() }}
<div class="input-group">
<h2 class="label label-default ">Choisir un service &nbsp </h2>
<select name="services" id="services" class="form-control col-md-4" >
@foreach($donnees as $datas)
<option value="{{ $datas->id }}">{{ $datas->label }}</option>
@endforeach
</select>
<button type="submit" class="btn btn-success ">Recherche</button>
</div>
</form>
</div>
@if(isset($procedures))
@if(count($procedures)>=1)

<table border="1" class="table table-striped" >
<thead class="p-3 mb-2 bg-primary text-white" >
<tr>
<th scope="col">Activités</th>
<th scope="col">Procedures</th>
</tr>
</thead>
<tbody>
@foreach($procedures as $data)
<tr>
<td>{{$data->Activite_pro}}</td>
<td><a href="{{$data->chemin}}"> {{$data->procedure}}</a></td>
</tr>
@endforeach
</tbody>
</table>
@else
<p>Pas de procédue trouvée!</p>
@endif
@endif

@endsection


voici un var_dump de la requête en local (WAMP; sql serveur)


et voici un var_dump de la même requête en production (Debian 9; PhP 7.3; Apache 2.4 et SQL serveur)


il y a un "b" qui apparaît et la chaîne de caractère n'est pas retournées dans la page web.



Merci

Configuration: Windows / Chrome 76.0.3809.132


--
junior kakou

3 réponses

  1. dinjer Messages postés 43 Statut Membre
     
    J'ai déjà vu cette page , les <meta> dans les entêtes de mais pages sont activés à utf-8.
    les caractères accentués s'affichent normalement. le Problème est que par exemple:

    @foreach($procedures as $data)
    <tr>
    <td>{{$data->Activite_pro}}</td>
    <td><a href="{{$data->chemin}}"> {{$data->procedure}}</a></td>
    </tr>
    @endforeach


    les chaînes de caractères issues de la BD sql serveur ne sont pas interprétées (il ne s'affichent même pas)
    et quand je les échappe

    (<a href="{{$data->chemin}}"> {!!$data->procedure!!}</a></td> )

    le texte s'affiche main les caractères accentués sont remplacés par @ ? ou autre symbole.

    Alors je me demande si sql serveur 2017 support le utf-8 ?

    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Il n'y a pas de raison que ça ne fonctionne pas...
      Mais si le souci te semble provenir du lien avec la bd sqlserver... faut poster ta question dans le forum sql server....

      par contre tu parles des <meta> dans les entêtes de tes pages...... mais... as tu vérifié, tel que le lien l'explique, l'encodage des fichiers eux même ???
      Avec quel outil ?
      Tu peux nous en faire une capture écran ?
      Et puis... avec quel code relies tu ton php avec ta bdd sql server ?


      NB: Pour poster ton code sur le forum.. merci de le faire correctement en utilisant les balises de code :
      https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
      0
  2. dinjer Messages postés 43 Statut Membre
     
    J'utilise phpstorm et laravel 5

    j'ai configurer l'encodage des fichier sur du UTF-8
    voici les paramètres


    pour les <meta> je parle des entêtes Html voici le code (c'est un layout)

    <!doctype html>
    <html lang="fr">
    <head>
        <bold><meta charset="UTF-8"></bold>
        <meta name="viewport" content="width=device-width,intial-scale=1">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <link rel="stylesheet" href="{{asset('css/app.css')}}" media="all">
        <title>{{config('app.name','COMODOR')}}</title>
    </head>
    <body>
      @include('inc.navbar')
    
      <div class="container">
    
          @yield('content')
      </div>
    
    </body>
    </html>
    


    et maintenant la page qui affiche les résultats

    @extends('layouts.app')
    
    @section('content')
    
        <br>
        <h1 class="text-center text-white" style="background-color: #ffbb33">Repertoire des procédures de travail</h1>
        <br>
        <div class="form-group mb-2">
            <form action="{{url('fenetre/procedure')}}" method="post">
                {{ csrf_field() }}
                <div class="input-group">
                    <h2 class="label label-default ">Choisir un service   </h2>
                    <select name="services" id="services" class="form-control col-md-4" >
                        @foreach($donnees as $datas   )
                            <option value="{{ $datas->id }}">{{ $datas->label }}</option>
                        @endforeach
                    </select>
                    <button type="submit" class="btn btn-success ">Recherche</button>
                </div>
            </form>
        </div>
        @if(isset($procedures))
            @if(count($procedures)>=1)
    
                <table border="1" class="table table-striped" >
                    <thead class="p-3 mb-2 bg-primary text-white" >
                    <tr>
                        <th scope="col">Activités</th>
                        <th scope="col">Procedures</th>
                    </tr>
                    </thead>
                    <tbody>
                    @foreach($procedures as $data)
                        <tr>
                            <td>{{$data->Activite_pro}}</td>
                            <td><a href="{{$data->chemin}}"> {{$data->procedure}}</a></td>
                         </tr>
                    @endforeach
                    </tbody>
                </table>
            @else
                <p>Pas de procédue trouvée!</p>
            @endif
        @endif
    
    @endsection
    


    le fichier de connexion à la BD est le fichier .env de laravel 5.4 Aussi en utf-8


    APP_NAME=Laravel
    APP_ENV=local
    APP_KEY=base64:baq0eC/IbMCHGuDRIgw3yzaFSzz+Y8th5c0AWI5Jk+4=
    APP_DEBUG=true
    APP_URL=http://localhost/intranet

    LOG_CHANNEL=stack

    DB_CONNECTION=sqlsrv
    DB_HOST=kakou-pc\SQLEXPRESS
    DB_PORT=1433
    DB_DATABASE=Contacts
    DB_USERNAME=sa
    DB_PASSWORD=**********

    BROADCAST_DRIVER=log
    CACHE_DRIVER=file
    QUEUE_CONNECTION=sync
    SESSION_DRIVER=file
    SESSION_LIFETIME=120

    REDIS_HOST=127.0.0.1
    REDIS_PASSWORD=null
    REDIS_PORT=6379

    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.mailtrap.io
    MAIL_PORT=2525
    MAIL_USERNAME=null
    MAIL_PASSWORD=null
    MAIL_ENCRYPTION=null

    AWS_ACCESS_KEY_ID=
    AWS_SECRET_ACCESS_KEY=
    AWS_DEFAULT_REGION=us-east-1
    AWS_BUCKET=

    PUSHER_APP_ID=
    PUSHER_APP_KEY=
    PUSHER_APP_SECRET=
    PUSHER_APP_CLUSTER=mt1

    MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
    MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
    --



    junior kakou
    0