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

Fermé
dinjer Messages postés 36 Date d'inscription vendredi 4 mai 2007 Statut Membre Dernière intervention 12 septembre 2019 - 12 sept. 2019 à 13:19
dinjer Messages postés 36 Date d'inscription vendredi 4 mai 2007 Statut Membre Dernière intervention 12 septembre 2019 - 12 sept. 2019 à 17:56
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   </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

3 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
12 sept. 2019 à 13:32
0
dinjer Messages postés 36 Date d'inscription vendredi 4 mai 2007 Statut Membre Dernière intervention 12 septembre 2019
Modifié le 12 sept. 2019 à 14:12
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
12 sept. 2019 à 16:02
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
dinjer Messages postés 36 Date d'inscription vendredi 4 mai 2007 Statut Membre Dernière intervention 12 septembre 2019
Modifié le 12 sept. 2019 à 18:03
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