Pour rester indépendant des plates formes, j'ai besoin de convertir des caractères codés iso-latin (ex xe0 pour é) en caractères imprimables html.
J'ai fait un tour dans la doc et je suis revenu bredouile. j'ai tenté avec htmlspecialchars, htmlentities sans succes. Une idée?
Mettre la bonne déclaration de charset dans le <head></head> ?-)
jerome herve
luc wrote:
A tu regarder du coté de
mb_convert_encoding ( )
http://fr3.php.net/mb_convert_encoding
tu convertie en ISO-8859-1, puis là tu peux appliquer tes fonction htmeentities, ..ect
Oui, mais j'avais envie de m'en passer dans la mesure où je ne crains que mbstring ne soit pas installé chez la majorité des hébergeurs mutualisés. Je pensais à quelque chose plus léger, mais je vais songer à cette solution.
Merci
luc wrote:
A tu regarder du coté de
mb_convert_encoding ( )
http://fr3.php.net/mb_convert_encoding
tu convertie en ISO-8859-1, puis là tu peux appliquer tes fonction
htmeentities, ..ect
Oui, mais j'avais envie de m'en passer dans la mesure où je ne crains
que mbstring ne soit pas installé chez la majorité des hébergeurs
mutualisés.
Je pensais à quelque chose plus léger, mais je vais songer à cette solution.
tu convertie en ISO-8859-1, puis là tu peux appliquer tes fonction htmeentities, ..ect
Oui, mais j'avais envie de m'en passer dans la mesure où je ne crains que mbstring ne soit pas installé chez la majorité des hébergeurs mutualisés. Je pensais à quelque chose plus léger, mais je vais songer à cette solution.
Merci
jerome herve
Bruno Desthuilliers wrote:
Mettre la bonne déclaration de charset dans le <head></head> ?-)
cela ne suffit pas car le navigateur ne sait pas convertir. Et puis, je me sert de javascript qui lui reconnait bien les jeux de caractères étendus.
Bruno Desthuilliers wrote:
Mettre la bonne déclaration de charset dans le <head></head> ?-)
cela ne suffit pas car le navigateur ne sait pas convertir.
Et puis, je me sert de javascript qui lui reconnait bien les jeux de
caractères étendus.
Mettre la bonne déclaration de charset dans le <head></head> ?-)
cela ne suffit pas car le navigateur ne sait pas convertir. Et puis, je me sert de javascript qui lui reconnait bien les jeux de caractères étendus.
Olivier Miakinen
Pour rester indépendant des plates formes, j'ai besoin de convertir des caractères codés iso-latin (ex xe0 pour é) en caractères imprimables html.
J'ai fait un tour dans la doc et je suis revenu bredouile. j'ai tenté avec htmlspecialchars, htmlentities sans succes. Une idée?
Selon l'interprétation que l'on peut faire de ta question, peut-être que Luc ou Bruno y a déjà répondu, ou peut-être que c'est moi qui vais te donner une réponse utilisable. Mais d'abord je commence par quelques questions.
Dans ton exemple xe0, la chaîne que tu manipules contient-elle un octet de valeur 224 (e0 en hexa) -- cas n°1 --, ou bien contient-elle quatre caractères qui sont '', 'x', 'e' et '0' -- cas n°2 -- ?
Par ailleurs, est-ce que ton exemple est correct, ou bien t'es-tu trompé en disant que xe0 doit devenir é ? En effet, en ISO-Latin-1 comme en ISO-Latin-9, le caractère à la position 224 est le à ! Il ne s'agit pas du codeset IBM 850 non plus, puisque c'est Ó qui est à cette position.
Je suppose que tu t'es trompé et que xe0 doit bien donner un à.
Dans le cas n°1, comme le signale Bruno tu n'as rien d'autre à faire que de déclarer le bon charset. Si tu veux pouvoir utiliser un charset différent, alors en supposant que $c contient l'octet de valeur xe0 tu peux faire : $result .= '&#' . ord($c) . ';' Note que pour tout charset incluant ascii ceci n'est nécessaire que pour les caractères tels que ord($c) >= 160.
Dans le cas n°2, tu peux transformer la chaîne 'e0' en le nombre 224 grâce à : $valeur = hexdec('e0') Ensuite, soit le charset est iso-latin-1 et il te suffit de faire : $result .= chr($valeur); Soit tu peux avoir un charset différent, et il faut : $result .= '&#' . $valeur . ';' Encore une fois, cette dernière forme n'est utile que lorsque tu as $valeur >= 160.
En espérant avoir aidé,
-- Olivier Miakinen
Pour rester indépendant des plates formes, j'ai besoin de convertir des
caractères codés iso-latin (ex xe0 pour é) en caractères imprimables html.
J'ai fait un tour dans la doc et je suis revenu bredouile. j'ai tenté
avec htmlspecialchars, htmlentities sans succes.
Une idée?
Selon l'interprétation que l'on peut faire de ta question, peut-être que
Luc ou Bruno y a déjà répondu, ou peut-être que c'est moi qui vais te
donner une réponse utilisable. Mais d'abord je commence par quelques
questions.
Dans ton exemple xe0, la chaîne que tu manipules contient-elle un octet
de valeur 224 (e0 en hexa) -- cas n°1 --, ou bien contient-elle quatre
caractères qui sont '', 'x', 'e' et '0' -- cas n°2 -- ?
Par ailleurs, est-ce que ton exemple est correct, ou bien t'es-tu trompé
en disant que xe0 doit devenir é ? En effet, en ISO-Latin-1 comme en
ISO-Latin-9, le caractère à la position 224 est le à ! Il ne s'agit pas
du codeset IBM 850 non plus, puisque c'est Ó qui est à cette position.
Je suppose que tu t'es trompé et que xe0 doit bien donner un à.
Dans le cas n°1, comme le signale Bruno tu n'as rien d'autre à faire que
de déclarer le bon charset. Si tu veux pouvoir utiliser un charset
différent, alors en supposant que $c contient l'octet de valeur xe0 tu
peux faire :
$result .= '&#' . ord($c) . ';'
Note que pour tout charset incluant ascii ceci n'est nécessaire que pour
les caractères tels que ord($c) >= 160.
Dans le cas n°2, tu peux transformer la chaîne 'e0' en le nombre 224
grâce à :
$valeur = hexdec('e0')
Ensuite, soit le charset est iso-latin-1 et il te suffit de faire :
$result .= chr($valeur);
Soit tu peux avoir un charset différent, et il faut :
$result .= '&#' . $valeur . ';'
Encore une fois, cette dernière forme n'est utile que lorsque tu as
$valeur >= 160.
Pour rester indépendant des plates formes, j'ai besoin de convertir des caractères codés iso-latin (ex xe0 pour é) en caractères imprimables html.
J'ai fait un tour dans la doc et je suis revenu bredouile. j'ai tenté avec htmlspecialchars, htmlentities sans succes. Une idée?
Selon l'interprétation que l'on peut faire de ta question, peut-être que Luc ou Bruno y a déjà répondu, ou peut-être que c'est moi qui vais te donner une réponse utilisable. Mais d'abord je commence par quelques questions.
Dans ton exemple xe0, la chaîne que tu manipules contient-elle un octet de valeur 224 (e0 en hexa) -- cas n°1 --, ou bien contient-elle quatre caractères qui sont '', 'x', 'e' et '0' -- cas n°2 -- ?
Par ailleurs, est-ce que ton exemple est correct, ou bien t'es-tu trompé en disant que xe0 doit devenir é ? En effet, en ISO-Latin-1 comme en ISO-Latin-9, le caractère à la position 224 est le à ! Il ne s'agit pas du codeset IBM 850 non plus, puisque c'est Ó qui est à cette position.
Je suppose que tu t'es trompé et que xe0 doit bien donner un à.
Dans le cas n°1, comme le signale Bruno tu n'as rien d'autre à faire que de déclarer le bon charset. Si tu veux pouvoir utiliser un charset différent, alors en supposant que $c contient l'octet de valeur xe0 tu peux faire : $result .= '&#' . ord($c) . ';' Note que pour tout charset incluant ascii ceci n'est nécessaire que pour les caractères tels que ord($c) >= 160.
Dans le cas n°2, tu peux transformer la chaîne 'e0' en le nombre 224 grâce à : $valeur = hexdec('e0') Ensuite, soit le charset est iso-latin-1 et il te suffit de faire : $result .= chr($valeur); Soit tu peux avoir un charset différent, et il faut : $result .= '&#' . $valeur . ';' Encore une fois, cette dernière forme n'est utile que lorsque tu as $valeur >= 160.
En espérant avoir aidé,
-- Olivier Miakinen
Olivier Miakinen
Le 02/07/2004 18:00, jerome herve répondait à luc :
mb_convert_encoding ( )
tu convertie en ISO-8859-1, puis là tu peux appliquer tes fonction htmeentities, ..ect
Oui, mais j'avais envie de m'en passer dans la mesure où je ne crains que mbstring ne soit pas installé chez la majorité des hébergeurs mutualisés. Je pensais à quelque chose plus léger, mais je vais songer à cette solution.
Ah, donc l'encodage de départ n'est pas ISO-8859-1. Si cet encodage est monobyte, tu dois pouvoir faire facilement une fonction de traduction en quelques lignes. Inspire toi de la fonction koi_to_win() proposée par lanka le 7 février 2003 : <http://fr3.php.net/mb_convert_encoding>.
Le 02/07/2004 18:00, jerome herve répondait à luc :
mb_convert_encoding ( )
tu convertie en ISO-8859-1, puis là tu peux appliquer tes fonction
htmeentities, ..ect
Oui, mais j'avais envie de m'en passer dans la mesure où je ne crains
que mbstring ne soit pas installé chez la majorité des hébergeurs
mutualisés.
Je pensais à quelque chose plus léger, mais je vais songer à cette solution.
Ah, donc l'encodage de départ n'est pas ISO-8859-1. Si cet encodage est
monobyte, tu dois pouvoir faire facilement une fonction de traduction en
quelques lignes. Inspire toi de la fonction koi_to_win() proposée par
lanka le 7 février 2003 : <http://fr3.php.net/mb_convert_encoding>.
Le 02/07/2004 18:00, jerome herve répondait à luc :
mb_convert_encoding ( )
tu convertie en ISO-8859-1, puis là tu peux appliquer tes fonction htmeentities, ..ect
Oui, mais j'avais envie de m'en passer dans la mesure où je ne crains que mbstring ne soit pas installé chez la majorité des hébergeurs mutualisés. Je pensais à quelque chose plus léger, mais je vais songer à cette solution.
Ah, donc l'encodage de départ n'est pas ISO-8859-1. Si cet encodage est monobyte, tu dois pouvoir faire facilement une fonction de traduction en quelques lignes. Inspire toi de la fonction koi_to_win() proposée par lanka le 7 février 2003 : <http://fr3.php.net/mb_convert_encoding>.
jerome herve
Ah, donc l'encodage de départ n'est pas ISO-8859-1. Si cet encodage est monobyte, tu dois pouvoir faire facilement une fonction de traduction en quelques lignes. Inspire toi de la fonction koi_to_win() proposée par lanka le 7 février 2003 : <http://fr3.php.net/mb_convert_encoding>.
Je n'avais pas vu cette remarque car j'utilise une doc non commentée. Merci encore.
Ah, donc l'encodage de départ n'est pas ISO-8859-1. Si cet encodage est
monobyte, tu dois pouvoir faire facilement une fonction de traduction en
quelques lignes. Inspire toi de la fonction koi_to_win() proposée par
lanka le 7 février 2003 : <http://fr3.php.net/mb_convert_encoding>.
Je n'avais pas vu cette remarque car j'utilise une doc non commentée.
Merci encore.
Ah, donc l'encodage de départ n'est pas ISO-8859-1. Si cet encodage est monobyte, tu dois pouvoir faire facilement une fonction de traduction en quelques lignes. Inspire toi de la fonction koi_to_win() proposée par lanka le 7 février 2003 : <http://fr3.php.net/mb_convert_encoding>.
Je n'avais pas vu cette remarque car j'utilise une doc non commentée. Merci encore.
jerome herve
Olivier Miakinen wrote:
Pour rester indépendant des plates formes, j'ai besoin de convertir des caractères codés iso-latin (ex xe0 pour é) en caractères imprimables html.
J'ai fait un tour dans la doc et je suis revenu bredouile. j'ai tenté avec htmlspecialchars, htmlentities sans succes. Une idée?
Selon l'interprétation que l'on peut faire de ta question, peut-être que Luc ou Bruno y a déjà répondu, ou peut-être que c'est moi qui vais te donner une réponse utilisable. Mais d'abord je commence par quelques questions.
Dans ton exemple xe0, la chaîne que tu manipules contient-elle un octet de valeur 224 (e0 en hexa) -- cas n°1 --, ou bien contient-elle quatre caractères qui sont '', 'x', 'e' et '0' -- cas n°2 -- ?
C'est bien un chaine de quatre caractères qui correspond à un caractère
accentué.
Par ailleurs, est-ce que ton exemple est correct, ou bien t'es-tu trompé en disant que xe0 doit devenir é ? En effet, en ISO-Latin-1 comme en ISO-Latin-9, le caractère à la position 224 est le à ! Il ne s'agit pas du codeset IBM 850 non plus, puisque c'est Ó qui est à cette position.
oui, je me suis pris les pieds dans le tapis, il s'agit bien d'un 'à'
Je suppose que tu t'es trompé et que xe0 doit bien donner un à.
Dans le cas n°1, comme le signale Bruno tu n'as rien d'autre à faire que de déclarer le bon charset.
Apparement non. J'ai fait des tests sur fedora core 2. L'encodage à l'origine iso-8859-1 n'était pas correctement interprété quelque soit le navigateur utilisé. Sur ce système, les polices sont au standard utf8. php retourne l'information dans le tableau $_ENV ($_ENV['LANG'] si je dis pas de bétises)
Si tu veux pouvoir utiliser un charset différent, alors en supposant que $c contient l'octet de valeur xe0 tu peux faire : $result .= '&#' . ord($c) . ';' Note que pour tout charset incluant ascii ceci n'est nécessaire que pour les caractères tels que ord($c) >= 160.
Dans le cas n°2, tu peux transformer la chaîne 'e0' en le nombre 224 grâce à : $valeur = hexdec('e0') Ensuite, soit le charset est iso-latin-1 et il te suffit de faire : $result .= chr($valeur); Soit tu peux avoir un charset différent, et il faut : $result .= '&#' . $valeur . ';' Encore une fois, cette dernière forme n'est utile que lorsque tu as $valeur >= 160.
En espérant avoir aidé,
Oui merci. Je vais pouvoir me débrouiller.
Olivier Miakinen wrote:
Pour rester indépendant des plates formes, j'ai besoin de convertir des
caractères codés iso-latin (ex xe0 pour é) en caractères imprimables html.
J'ai fait un tour dans la doc et je suis revenu bredouile. j'ai tenté
avec htmlspecialchars, htmlentities sans succes.
Une idée?
Selon l'interprétation que l'on peut faire de ta question, peut-être que
Luc ou Bruno y a déjà répondu, ou peut-être que c'est moi qui vais te
donner une réponse utilisable. Mais d'abord je commence par quelques
questions.
Dans ton exemple xe0, la chaîne que tu manipules contient-elle un octet
de valeur 224 (e0 en hexa) -- cas n°1 --, ou bien contient-elle quatre
caractères qui sont '', 'x', 'e' et '0' -- cas n°2 -- ?
C'est bien un chaine de quatre caractères qui correspond à un caractère
accentué.
Par ailleurs, est-ce que ton exemple est correct, ou bien t'es-tu trompé
en disant que xe0 doit devenir é ? En effet, en ISO-Latin-1 comme en
ISO-Latin-9, le caractère à la position 224 est le à ! Il ne s'agit pas
du codeset IBM 850 non plus, puisque c'est Ó qui est à cette position.
oui, je me suis pris les pieds dans le tapis, il s'agit bien d'un 'à'
Je suppose que tu t'es trompé et que xe0 doit bien donner un à.
Dans le cas n°1, comme le signale Bruno tu n'as rien d'autre à faire que
de déclarer le bon charset.
Apparement non. J'ai fait des tests sur fedora core 2. L'encodage à
l'origine iso-8859-1 n'était pas correctement interprété quelque soit le
navigateur utilisé.
Sur ce système, les polices sont au standard utf8. php retourne
l'information dans le tableau $_ENV ($_ENV['LANG'] si je dis pas de bétises)
Si tu veux pouvoir utiliser un charset
différent, alors en supposant que $c contient l'octet de valeur xe0 tu
peux faire :
$result .= '&#' . ord($c) . ';'
Note que pour tout charset incluant ascii ceci n'est nécessaire que pour
les caractères tels que ord($c) >= 160.
Dans le cas n°2, tu peux transformer la chaîne 'e0' en le nombre 224
grâce à :
$valeur = hexdec('e0')
Ensuite, soit le charset est iso-latin-1 et il te suffit de faire :
$result .= chr($valeur);
Soit tu peux avoir un charset différent, et il faut :
$result .= '&#' . $valeur . ';'
Encore une fois, cette dernière forme n'est utile que lorsque tu as
$valeur >= 160.
Pour rester indépendant des plates formes, j'ai besoin de convertir des caractères codés iso-latin (ex xe0 pour é) en caractères imprimables html.
J'ai fait un tour dans la doc et je suis revenu bredouile. j'ai tenté avec htmlspecialchars, htmlentities sans succes. Une idée?
Selon l'interprétation que l'on peut faire de ta question, peut-être que Luc ou Bruno y a déjà répondu, ou peut-être que c'est moi qui vais te donner une réponse utilisable. Mais d'abord je commence par quelques questions.
Dans ton exemple xe0, la chaîne que tu manipules contient-elle un octet de valeur 224 (e0 en hexa) -- cas n°1 --, ou bien contient-elle quatre caractères qui sont '', 'x', 'e' et '0' -- cas n°2 -- ?
C'est bien un chaine de quatre caractères qui correspond à un caractère
accentué.
Par ailleurs, est-ce que ton exemple est correct, ou bien t'es-tu trompé en disant que xe0 doit devenir é ? En effet, en ISO-Latin-1 comme en ISO-Latin-9, le caractère à la position 224 est le à ! Il ne s'agit pas du codeset IBM 850 non plus, puisque c'est Ó qui est à cette position.
oui, je me suis pris les pieds dans le tapis, il s'agit bien d'un 'à'
Je suppose que tu t'es trompé et que xe0 doit bien donner un à.
Dans le cas n°1, comme le signale Bruno tu n'as rien d'autre à faire que de déclarer le bon charset.
Apparement non. J'ai fait des tests sur fedora core 2. L'encodage à l'origine iso-8859-1 n'était pas correctement interprété quelque soit le navigateur utilisé. Sur ce système, les polices sont au standard utf8. php retourne l'information dans le tableau $_ENV ($_ENV['LANG'] si je dis pas de bétises)
Si tu veux pouvoir utiliser un charset différent, alors en supposant que $c contient l'octet de valeur xe0 tu peux faire : $result .= '&#' . ord($c) . ';' Note que pour tout charset incluant ascii ceci n'est nécessaire que pour les caractères tels que ord($c) >= 160.
Dans le cas n°2, tu peux transformer la chaîne 'e0' en le nombre 224 grâce à : $valeur = hexdec('e0') Ensuite, soit le charset est iso-latin-1 et il te suffit de faire : $result .= chr($valeur); Soit tu peux avoir un charset différent, et il faut : $result .= '&#' . $valeur . ';' Encore une fois, cette dernière forme n'est utile que lorsque tu as $valeur >= 160.