Il me semblait que l'utilisation de section CDATA permettait de
s'abstraire des problèmes de caractères utilisés.
Or, j'ai une erreur avec simple_xml_file, apparemment dûe à un caractère
étrange ($001D).
Je n'ai pas trouvé les limites de cette commande dans la doc php.
Avez-vous davantage d'infos ?
Il me semblait que l'utilisation de section CDATA permettait de
s'abstraire des problèmes de caractères utilisés.
Or, j'ai une erreur avec simple_xml_file, apparemment dûe à un caractère
étrange ($001D).
Je n'ai pas trouvé les limites de cette commande dans la doc php.
Avez-vous davantage d'infos ?
Il me semblait que l'utilisation de section CDATA permettait de
s'abstraire des problèmes de caractères utilisés.
Or, j'ai une erreur avec simple_xml_file, apparemment dûe à un caractère
étrange ($001D).
Je n'ai pas trouvé les limites de cette commande dans la doc php.
Avez-vous davantage d'infos ?
<cit. http://www.w3.org/TR/REC-xml/#charsets>
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]
</cit.>
Le caractère #x1D (séparateur de groupe en ascii) n'en fait pas partie.
Cordialement,
<cit. http://www.w3.org/TR/REC-xml/#charsets>
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]
</cit.>
Le caractère #x1D (séparateur de groupe en ascii) n'en fait pas partie.
Cordialement,
<cit. http://www.w3.org/TR/REC-xml/#charsets>
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]
</cit.>
Le caractère #x1D (séparateur de groupe en ascii) n'en fait pas partie.
Cordialement,
<cit. http://www.w3.org/TR/REC-xml/#charsets>
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]
</cit.>
Le caractère #x1D (séparateur de groupe en ascii) n'en fait pas partie.
[...] comment ça se corrige ? Côté PHP, il n'y a rien qui puisse
permettre de filtrer ça rapidement ?
<cit. http://www.w3.org/TR/REC-xml/#charsets>
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]
</cit.>
Le caractère #x1D (séparateur de groupe en ascii) n'en fait pas partie.
[...] comment ça se corrige ? Côté PHP, il n'y a rien qui puisse
permettre de filtrer ça rapidement ?
<cit. http://www.w3.org/TR/REC-xml/#charsets>
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]
</cit.>
Le caractère #x1D (séparateur de groupe en ascii) n'en fait pas partie.
[...] comment ça se corrige ? Côté PHP, il n'y a rien qui puisse
permettre de filtrer ça rapidement ?
<cit. http://www.w3.org/TR/REC-xml/#charsets>
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]
</cit.>
<cit. http://www.w3.org/TR/REC-xml/#charsets>
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]
</cit.>
<cit. http://www.w3.org/TR/REC-xml/#charsets>
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]
</cit.>
Le même un peu mis en forme :
<table class="scrap" summary="Scrap">
<tbody>
<tr valign="baseline">
<td><a name="NT-Char" id="NT-Char">[2] </a></td>
<td><code>Char</code></td>
<td> ::= </td>
<td><code>#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]</code></td>
<td><i>/* any Unicode character, excluding the surrogate blocks,
FFFE, and FFFF. */</i></td>
</tr>
</tbody>
</table>
:-D
[suivi positionné vers fr.comp.infosystemes.www.auteurs]
Le même un peu mis en forme :
<table class="scrap" summary="Scrap">
<tbody>
<tr valign="baseline">
<td><a name="NT-Char" id="NT-Char">[2] </a></td>
<td><code>Char</code></td>
<td> ::= </td>
<td><code>#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]</code></td>
<td><i>/* any Unicode character, excluding the surrogate blocks,
FFFE, and FFFF. */</i></td>
</tr>
</tbody>
</table>
:-D
[suivi positionné vers fr.comp.infosystemes.www.auteurs]
Le même un peu mis en forme :
<table class="scrap" summary="Scrap">
<tbody>
<tr valign="baseline">
<td><a name="NT-Char" id="NT-Char">[2] </a></td>
<td><code>Char</code></td>
<td> ::= </td>
<td><code>#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]</code></td>
<td><i>/* any Unicode character, excluding the surrogate blocks,
FFFE, and FFFF. */</i></td>
</tr>
</tbody>
</table>
:-D
[suivi positionné vers fr.comp.infosystemes.www.auteurs]
Voici juste quelques idées si jamais ça n'existait pas (je suppose que
ton Unicode est en UTF-8, adapter la réponse sinon) :
- essayer un iconv de UTF-8 vers UTF-8 avec IGNORE ;
- essayer avec preg_replace en mode UTF-8 ;
- ou tout simplement faire un preg_replace en mode monobyte, si les
seuls caractères problématiques sont ceux de #x00-#1F.
Voici juste quelques idées si jamais ça n'existait pas (je suppose que
ton Unicode est en UTF-8, adapter la réponse sinon) :
- essayer un iconv de UTF-8 vers UTF-8 avec IGNORE ;
- essayer avec preg_replace en mode UTF-8 ;
- ou tout simplement faire un preg_replace en mode monobyte, si les
seuls caractères problématiques sont ceux de #x00-#1F.
Voici juste quelques idées si jamais ça n'existait pas (je suppose que
ton Unicode est en UTF-8, adapter la réponse sinon) :
- essayer un iconv de UTF-8 vers UTF-8 avec IGNORE ;
- essayer avec preg_replace en mode UTF-8 ;
- ou tout simplement faire un preg_replace en mode monobyte, si les
seuls caractères problématiques sont ceux de #x00-#1F.
- essayer un iconv de UTF-8 vers UTF-8 avec IGNORE ;
Merci, iconv me semble une bonne solution.
- essayer un iconv de UTF-8 vers UTF-8 avec IGNORE ;
Merci, iconv me semble une bonne solution.
- essayer un iconv de UTF-8 vers UTF-8 avec IGNORE ;
Merci, iconv me semble une bonne solution.
- essayer un iconv de UTF-8 vers UTF-8 avec IGNORE ;
- essayer un iconv de UTF-8 vers UTF-8 avec IGNORE ;
- essayer un iconv de UTF-8 vers UTF-8 avec IGNORE ;
Le 06/01/2011 12:54, Olivier Masson a écrit :- essayer un iconv de UTF-8 vers UTF-8 avec IGNORE ;
Merci, iconv me semble une bonne solution.
L'as-tu testé ? Cela pourrait fonctionner, mais ça pourrait tout aussi
bien ne rien donner, pour l'une ou l'autre des multiples raisons
suivantes :
- une optimisation faisant que la conversion UTF-8 vers UTF-8 ne fait
tout simplement rien ;
- un refus de traiter les caractères invalides (ce qui est différent
de ne pas pouvoir les transcrire dans un autre charset) ;
- considérer que le caractère U+001D est valide dans Unicode, bien qu'il
ne le soit pas pour XML ;
- traiter le IGNORE en laissant les caractères inchangés au lieu de les
supprimer ;
- et peut-être d'autres encore.
Bref, moi je n'ai pas testé mais je n'ai qu'une confiance limitée dans
le résultat.
Cordialement,
Le 06/01/2011 12:54, Olivier Masson a écrit :
- essayer un iconv de UTF-8 vers UTF-8 avec IGNORE ;
Merci, iconv me semble une bonne solution.
L'as-tu testé ? Cela pourrait fonctionner, mais ça pourrait tout aussi
bien ne rien donner, pour l'une ou l'autre des multiples raisons
suivantes :
- une optimisation faisant que la conversion UTF-8 vers UTF-8 ne fait
tout simplement rien ;
- un refus de traiter les caractères invalides (ce qui est différent
de ne pas pouvoir les transcrire dans un autre charset) ;
- considérer que le caractère U+001D est valide dans Unicode, bien qu'il
ne le soit pas pour XML ;
- traiter le IGNORE en laissant les caractères inchangés au lieu de les
supprimer ;
- et peut-être d'autres encore.
Bref, moi je n'ai pas testé mais je n'ai qu'une confiance limitée dans
le résultat.
Cordialement,
Le 06/01/2011 12:54, Olivier Masson a écrit :- essayer un iconv de UTF-8 vers UTF-8 avec IGNORE ;
Merci, iconv me semble une bonne solution.
L'as-tu testé ? Cela pourrait fonctionner, mais ça pourrait tout aussi
bien ne rien donner, pour l'une ou l'autre des multiples raisons
suivantes :
- une optimisation faisant que la conversion UTF-8 vers UTF-8 ne fait
tout simplement rien ;
- un refus de traiter les caractères invalides (ce qui est différent
de ne pas pouvoir les transcrire dans un autre charset) ;
- considérer que le caractère U+001D est valide dans Unicode, bien qu'il
ne le soit pas pour XML ;
- traiter le IGNORE en laissant les caractères inchangés au lieu de les
supprimer ;
- et peut-être d'autres encore.
Bref, moi je n'ai pas testé mais je n'ai qu'une confiance limitée dans
le résultat.
Cordialement,
<cit. http://www.w3.org/TR/REC-xml/#charsets>
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]
</cit.>
Code utilisé :
$xml =
preg_replace('/[^x{9}|x{A}|x{D}|x{20}-x{D7FF}|x{E000}-x{FFFD}|x{10000}-x{10FFFF}]+/u',
' ', $xmlString);
<cit. http://www.w3.org/TR/REC-xml/#charsets>
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]
</cit.>
Code utilisé :
$xml =
preg_replace('/[^x{9}|x{A}|x{D}|x{20}-x{D7FF}|x{E000}-x{FFFD}|x{10000}-x{10FFFF}]+/u',
' ', $xmlString);
<cit. http://www.w3.org/TR/REC-xml/#charsets>
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]
</cit.>
Code utilisé :
$xml =
preg_replace('/[^x{9}|x{A}|x{D}|x{20}-x{D7FF}|x{E000}-x{FFFD}|x{10000}-x{10FFFF}]+/u',
' ', $xmlString);