Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PHP et Unicode - quel est le truc ?

28 réponses
Avatar
Denis Beauregard
Bonjour,

Je voudrais afficher le caractère Unicode 2533 (une sorte de T, voir
http://www.unicode.org/charts/PDF/U2500.pdf ).

J'ai suivi les instructions mais php.net est assez vague de ce côté.
J'ai essayé ce script :


<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<meta name="Author" content="Denis Beauregard">
</head>
<body >

test[\p{2533}]test

</body>
</html>


Il affiche test[\p{2533}]test et non le caractère attendu.

Idem avec \P.
\X2533 donne %33

Donc, je conclus qu'il ne s'agit ici que d'expressions régulières
pour la recherche, sans rapport avec un affichage.

&#2533; affiche un caractère bizarre qui est peut-être celui demandé.

La documentation mentionne un mode UTF-8 sans donner plus de détails.
Je n'ai pas non plus d'exemple sur l'utilisation du Unicode en PHP.

1. Comment fait-on pour afficher ce caractère 2533 en HTML ou PHP.
2. Faut-il installer quelque chose dans le navigateur pour que
l'affichage se fasse ? J'ai essayé Seamonkey, FF et IE 8.

Le caractère semble visible si je choisis UTF-16 comme affichage,
donc il me semble que le jeu requis est présent dans le navigateur.
Par contre, si je place &#2533; au début du fichier, je n'ai pas
mon fameux caractère.


Denis

10 réponses

1 2 3
Avatar
Denis Beauregard
Le Tue, 26 Jul 2011 21:04:14 -0400, Denis Beauregard
écrivait dans
fr.comp.infosystemes.www.auteurs:

Bonjour,


Pour les curieux qui voudraient voir le résultat, c'est sur
http://www.francogene.com/SE/index.php



Voir en particulier ce lien qui résume les éléments principaux.

http://www.francogene.com/SE/voir.php?module=2&proc&raf=0


Un autre problème est l'espacement des caractères. Avec Gecko/20110420
SeaMonkey/2.0.14, c'est parfait horizontalement mais les traits sont
espacés verticalement. Avec FireFox 4.01, il y a des espaces dans les
deux axes. IE 8 agit comme Seamonkey. Je n'ai pas testé avec d'autres
navigateurs... Je suppose que pour l'axe vertical, c'est une question
de CSS, mais pour l'horizontal, peut-être une valeur par défaut
différente avec FF et que je pourrais changer.



Problème résolu avec du CSS.

Mais le dessin n'est joli qu'avec Seamonkey et FF. Avec IE 8, les
lignes ont des épaisseurs qui varient ou ne sont pas alignées.
C'est comme si IE avait défini différemment cette série de
caractères.


Denis
Avatar
SAM
Le 27/07/11 03:04, Denis Beauregard a écrit :
Bonjour,


Pour les curieux qui voudraient voir le résultat, c'est sur
http://www.francogene.com/SE/index.php



Firefox 5 (Mac) :
- <http://cjoint.com/?AGBkHQIGeu6&gt;
- <http://cjoint.com/?AGBkKui1z8d&gt;
Safari.5 (Mac) :
- <http://cjoint.com/?AGBkKU6VO82&gt;
- <http://cjoint.com/?AGBkLl7g7zi&gt;

J'ai encore quelques problèmes à résoudre.



pourquoi j'ai un changement de taille de police ?
(pour "Description" ou "Variables")
est-ce que ça n'influe pas sur le positionnement des dessins des lignes ?

Tout d'abord, remplacer le
X par quelque chose qui ressemble plus à une astérisque mais qui
soit de la même largeur que les autres caractères.



à mon idée, tous ces caractères (y compris ceux alphanumériques en
fontes web de M$) sont de même largeur/hauteur.

Voir colonnes puis P(08) strtrim



Ha!?
Alors avec "mon" Firefox.5 : <http://cjoint.com/?AGBlBFfURF5&gt;


Avec d'autres caractères que le X, la ligne au-dessus de "NUL Ne rien
faire", n'est pas à sa place. Le X fait partie de la page 25xx. C'est
comme si Seamonkey (que j'ai utilisé pour mes tests) gardait la même
largeur que le caractère précédent quand on en utilise un plus étroit.


Un autre problème est l'espacement des caractères.



tout s'arrange si on fait :

.dessin {
font-size: 15px;
letter-spacing: 0; /* auto ? ou ligne supprimée ? */
line-height: 0;
font-family: arial; /* arial est réputé pour bien fonctionner */
}

ou carrément :

pre {
font-size: 15px;
line-height: 13px;
font-family: arial, georgia, verdana;
}

source :
<http://covertprestige.info/html/espaces-unicode/&gt;

et même, sans doute, les espaces pourraient être de simples espaces
si tout est dans une balise 'pre'
ou avec une règle :
white-space: pre;

--
Stéphane Moriaux avec/with iMac-intel
Avatar
SAM
Le 27/07/11 12:08, SAM a écrit :

tout s'arrange si on fait :



voir :
<http://cjoint.com/?AGBnduu4DkB&gt;
<http://cjoint.com/11ju/AGBnduu4DkB_b-ascii__.htm&gt;

--
Stéphane Moriaux avec/with iMac-intel
Avatar
Pierre Goiffon
On 26/07/2011 22:08, Olivier Miakinen wrote:
Curieusement, ma page est détectée comme latin1 par le navigateur



C'est sûrement que l'entête HTTP déclare du Latin1, puisque le meta
http-equiv déclare UTF-8. Pour que les deux soient corrects à la fois,
il faut que la page ne contienne que de l'US-ASCII, ce qui est assez
restrictif. ;-) Il vaudrait mieux que tu choisisses l'un ou l'autre
(Latin1 ou UTF-8) et que tu changes la déclaration qui affirme le
contraire.



Et si la page est servie en UTF-8 alors pas de soucis, pas besoin
d'entité html ! Car bien sûr tous les caractères présents dans Unicode
pourront être utilisés.
Avatar
Denis Beauregard
Le Wed, 27 Jul 2011 12:08:51 +0200, SAM
écrivait dans
fr.comp.infosystemes.www.auteurs:

Le 27/07/11 03:04, Denis Beauregard a écrit :
Bonjour,


Pour les curieux qui voudraient voir le résultat, c'est sur
http://www.francogene.com/SE/index.php



Firefox 5 (Mac) :
- <http://cjoint.com/?AGBkHQIGeu6&gt;
- <http://cjoint.com/?AGBkKui1z8d&gt;
Safari.5 (Mac) :
- <http://cjoint.com/?AGBkKU6VO82&gt;
- <http://cjoint.com/?AGBkLl7g7zi&gt;



On dirait qu'il y a que FF et Seamonkey sur Windows qui ont un espace
em de la même largeur que leurs dessins de lignesé

J'ai encore quelques problèmes à résoudre.



pourquoi j'ai un changement de taille de police ?
(pour "Description" ou "Variables")



Pour que les lignes se touchent et soient continues, j'ai grossi les
caractères des lignes. J'ai fait le changement mais il reste des
choses à corriger avant de changer la version sur Internet.

est-ce que ça n'influe pas sur le positionnement des dessins des lignes ?



Je pense que le Mac n'a pas la même police. En fait, de ce que j'ai
vu, toute la série 25xx a la même largeur, mais sur FF et Seamonkey,
c'est celle du 2003 (em sp,
http://www.unicode.org/charts/PDF/U2000.pdf ), sur IE 8, c'est un
pixel de différence, et sur le Mac, il faudrait peut-être le 2004
(3/m sp).

Tout d'abord, remplacer le
X par quelque chose qui ressemble plus à une astérisque mais qui
soit de la même largeur que les autres caractères.



à mon idée, tous ces caractères (y compris ceux alphanumériques en
fontes web de M$) sont de même largeur/hauteur.



Hélas non. J'ai fait plusieurs essais et seul le X fait le travail.
Dans http://www.francogene.com/SE/voir.php?module=2&proc&raf=0
le résultat requis est assez évident : il faut que les deux verticales
les plus à droite soit alignées, ce qui n'est pas le cas avec les
autres caractères. Le X est 2573, donc même groupe que les lignes.

Voir colonnes puis P(08) strtrim



Ha!?
Alors avec "mon" Firefox.5 : <http://cjoint.com/?AGBlBFfURF5&gt;



Donc, il me faudra prévoir une version pour le Mac !

Mon vieil algorithme de 1985 fonctionne bien si les caractères sont
tous de même largeur. C'est beaucoup plus compliqué si je dois tout
refaire avec des boîtes ou en dessinant les lignes une à une.

Avec d'autres caractères que le X, la ligne au-dessus de "NUL Ne rien
faire", n'est pas à sa place. Le X fait partie de la page 25xx. C'est
comme si Seamonkey (que j'ai utilisé pour mes tests) gardait la même
largeur que le caractère précédent quand on en utilise un plus étroit.


Un autre problème est l'espacement des caractères.



tout s'arrange si on fait :

.dessin {
font-size: 15px;



au moins 16px sinon le trait n'est pas continu (Seamonkey, FF et IE)

letter-spacing: 0; /* auto ? ou ligne supprimée ? */



Requis pour Seamonkey

line-height: 0;
font-family: arial; /* arial est réputé pour bien fonctionner */



Améliore IE, détériore Seamonkey et FF

}

ou carrément :

pre {
font-size: 15px;



Il faut que le texte soit plus petit que le dessin, pour que les
traits se touchent.

line-height: 13px;
font-family: arial, georgia, verdana;
}

source :
<http://covertprestige.info/html/espaces-unicode/&gt;

et même, sans doute, les espaces pourraient être de simples espaces
si tout est dans une balise 'pre'
ou avec une règle :
white-space: pre;



J'ai essayé arial et courrier et c'est meilleur ou pire selon le
navigateur ! J'ai l'impression que je devrai prévoir une détection
du navigateur puis une correction possible. Au moins, je vois qu'en
changeant le css, on peut avoir des bons résultats dans tous les
cas.

Merci pour les commentaires !


Denis
Avatar
Denis Beauregard
Le Wed, 27 Jul 2011 13:04:23 +0200, SAM
écrivait dans
fr.comp.infosystemes.www.auteurs:

Le 27/07/11 12:08, SAM a écrit :

tout s'arrange si on fait :



voir :
<http://cjoint.com/?AGBnduu4DkB&gt;
<http://cjoint.com/11ju/AGBnduu4DkB_b-ascii__.htm&gt;



Malheureusement, cela ne passe pas sur Windows !

Seamonkey : espace trop large, 1 pixel de blanc en horizontal
et 1 pixel en vertical à 2 endroits.

Firefox : l'espace a la bonne largeur, mais 3 pixels de
blanc en horizontal (les traits ne se touchent pas)

IE 8 : 1 pixel de blanc en horizontal, X de largeur
différente et les div ne fonctionnent pas du tou !

Conclusion : laisser à l'usager le choix de son CSS (et
un éditeur de CSS en ligne, en utilisant des cookies)


Denis
Avatar
SAM
Le 27/07/11 14:24, Pierre Goiffon a écrit :

Et si la page est servie en UTF-8 alors pas de soucis, pas besoin
d'entité html !



Tien ? Mais c'est une bonne idée !
Hop! j'ajoute l'utf-8 à ma démo : <http://cjoint.com/?AGBuI6GsMrw&gt;


--
Stéphane Moriaux avec/with iMac-intel
Avatar
SAM
Le 27/07/11 15:37, Denis Beauregard a écrit :

Conclusion : laisser à l'usager le choix de son CSS (et
un éditeur de CSS en ligne, en utilisant des cookies)



Boudiou !
Non !
Il doit bien il y avoir moyen à moyenner ! !

VT100 ?

--
Stéphane Moriaux avec/with iMac-intel
Avatar
Denis Beauregard
Le Wed, 27 Jul 2011 21:52:21 +0200, SAM
écrivait dans
fr.comp.infosystemes.www.auteurs:

Le 27/07/11 15:37, Denis Beauregard a écrit :

Conclusion : laisser à l'usager le choix de son CSS (et
un éditeur de CSS en ligne, en utilisant des cookies)



Boudiou !
Non !
Il doit bien il y avoir moyen à moyenner ! !

VT100 ?



J'ai développé cette application de 1984 à 1988.

En janvier 1984, 1er prototype écrit en Basic sur Apple ][
En 84-85, 2e prototype en Fortran et ASM sur PC
En 85-86, version finale en ASM sur PC.
En 85-88, traducteurs pour différents langages, C++, Fortran, etc.

Les versions sur PC écrivaient directement dans la mémoire de
l'ordi, donc tout était parfaitement aligné. Les seuls
inconvénients : 1- certains caractères ont disparu de la
page CP850 (ou CP835 ou 37 ?) utilisée, et 2- cela ne marche
plus dans Windows 7 parce que je n'arrive pas à installer
VirtualBox ou VMWare. À cause de 2, j'ai décidé de refaire
mon éditeur. Cela aurait l'avantage de donner plus de
facilités pour un minimum fonctionnel et une éventuelle relance
économique (mais j'ai échoué en 86-88 et je ne vois pas pourquoi
je réussirais en 2011). Par contre, j'ai un grand nombre
d'applications en C++ écrites avec cet outil et je voudrais
pouvoir les modifier.

Pour refaire mon éditeur, j'ai, je pense, 2 choix : un écran
graphique fixe (un tableau 25/43/50/? x 80 qui émulerait la vieille
carte graphique du PC), avec la possibilité de dessiner les
caractères graphiques si ceux de la série 25xx sont trop
différents; ou bien continuer sur ma lancée et avoir des CSS
différents selon le navigateur (et je pense que c'est plus
simple d'avoir 3 ou 4 CSS et de les choisir via un cookie).
Pour le moment, je préfère la 2e solution. Je peux afficher le
minimum sur ma page d'accueil pour qu'on choisisse le meilleur
CSS en fonction de son navigateur. Cela enregistrerait un cookie
avec le CSS en question, et les pages seraient ensuite affichées
avec ce CSS. En fait, je pourrais avoir 1 CSS Seamonkey/FF puisque
cela marche déjà, 1 CSS IE 8 que je peux mettre au point, 1 CSS
Mac en supposant que celui de Stéphane marchera avec les navigateurs
Mac (où il y a peut-être le même jeu de caractères pour tous les
navigateurs), et 1 CSS pour Linux (j'ai une vieille Debian que je
pourrai utiliser dans quelques jours).

Donc, pour le moment, je vais avoir plusieurs CSS et laisser le
visiteur choisir. Je pense que c'est plus simple que de refaire
un éditeur en javascript qui fonctionnerait comme une grille de
mots croisés.


Denis
Avatar
Denis Beauregard
Bonjour,


Nouvel essai.

http://www.francogene.com/SE/exemple.html

J'ai utilisé 3 feuilles différentes selon le navigateur. Le code
est le même, sauf que la classe change selon la section.

Le premier dessin est bien affiché dans Seamonkey et Firefox.

Le second dessin est bien affiché dans Firefox et presque bien dans
IE 8 (problème avec le X qui n'a pas la bonne largeur).

Le troisière dessin contient le CSS utilisé par SAM sur son Mac
et devrait donc être lisible sur le Mac.


Ce que je pourrais faire, c'est que si on n'a pas de cookie déjà
défini, on doit choisir entre les trois, et que si c'est défini,
alors on affiche en fonction du cookie.

J'aimerais bien régler le problème du X (ou une étoile ou autre chose
similaire) qui soit de la même largeur que les dessins. Parmi tous
les éléments disponibles pour les polices, aucun ne semble faire
l'affaire pour corriger ce problème.


Denis
1 2 3