Décrivez ici votre problème ou ce que vous cherchez à faire.

Ecrire sur une image en php
Entourez votre code en utilisant "```" pour bien le mettre en forme. (ne copiez pas trop de code)
Le script php est sauvé en UTF-8


```imagestring($Container, 5,x,y, $Txt, $rouge);

**Ce que je veux**

$Txt = "Données périmées"

**Ce que j'obtiens**

j'obtiens "DonnĂŚes pĂŚrimĂŚes"

9 réponses


Tu est tout le temps en UTF8 ou c'est exceptionnel?

Si tu est tout le temps en UTF8 ton php est mal configuré, va dans php.ini et modifies cettes valeur:
default_charset = "utf-8";

Si c'est exceptionnel, tu peux faire un utf8_encode puis utf8_decode :p

Hervé
Auteur

$Txt = utf8_decode("Données périmées ") => Données périmées
Mon script est donc bien en UTF-8 mais pourquoi dois-je les convertie en ISO-8859-1 puisque la 1ère ligne de ce script est
header('Content-Type: text/html; charset=utf-8');

Tu as plusieurs UFT8 (unicode, mb4, etc...)
Ensuite tu as reglé ton site pour un encodage UTF8 avec le header, pas ton PHP

Ensuite tu as autre chose, ton texte, c'est un texte en dur ou bien un texte récupéré sur une base MySQL? (le charset par défaut de MySQL c'est Latin, faut penser a créer la table en UTF8_unicode_ci)

Hervé
Auteur

$Txt = utf8_decode("Données périmées ")
le texte est donc hardcodé.

utf8_decode sert à décoder un texte qui est lui même encodé en utf8, si uft8_decode ne fonctionne pas, ça veut dire que le texte de base n'est pas dans le bon utf8 (iso, unicode, mb4... Normalement sur Windows c'est ISO)

Il faut d'abord encoder le texte en utf8 configuré par ton PHP, et ENSUITE utiliser utf8_decode pour decoder le texte encodé

Ptet comme ça:

$txt = "Données périmées"
$txt = utf8_encode($txt)
$txt = utf8_decode($txt)

?

Hervé
Auteur

Bonjour,
Puisque mon script est enregistré en UTF-8 il n'est pas nécessaire de l'encoder, d'ailleurs ceci fonctionne très bien
$txt = "Données périmées"
$txt = utf8_decode($txt)
Par contre je ne comprends toujours pas pourquoi il faut décoder le texte puisque la première ligne demon script est
header('Content-Type: text/html; charset=utf-8');
le navigateur devrait donc afficher les données UTF-8 sans devoir les convertir en ISO-8859-1
pourquoi ce header n'est-il pa spris en compte ?

Vas sur le Discord de Grafikart et explique ton problème :)

Sinon, si il y a de l'H.T.M.L, tu peux mettre dans le <head></head> une meta :
<meta charset="UTF-8">

Hervé
Auteur

Ca y est déjà
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>RVRT Activity</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body ...