Re: zip_entry_name & accents
Le 10/09/2007 23:17, heulman a écrit :
>
> $k = iconv("CP850", "CP1252", $j);
>
> Effectivement, ça roule ! ... enfin presque.
>
> Avec 7-zip ou WinRar ça fonctionne, mais pas tout à fait avec WinZip.
> En effet, quand WinZip trouve un oe ("e dans l'o") dans le nom de fichier
Ah ? Parce que 7-zip et WinRar n'ont *pas* de problème pour encoder un ½
en CP850 ? Ben comment ils font, alors, vu que ce caractère n'existe pas
dans cette table ?
C'est une vraie question, et j'aimerais bien savoir ce qu'ils en font
(par exemple une « translittération » en oe).
> il semble qu'il utilise CP1252 (ou autre chose mais pas CP850), du coup de
> décodage ne fonctionne pas et on obtient n'importe quoi.
Si tu veux que je puisse t'aider il faudrait que je sache ce que devient
ce ½ dans WinZip, avant que tu ne le transformes par iconv.
> [...]
>
> J'avoue être complètement à l'ouest avec tous ces pbs d'encodage.
C'est un problème difficile à cause de tous ces endroits où on a un jeu
de caractères non déclaré, mais avec de la patience ça peut finir par
devenir amusant.
> Est-ce qu'il y a un moyen de vérifier le jeu de caractère utilisé pour
> déterminer si il faut le changer ?
Ça c'est un problème encore plus difficile à traiter dans toute sa
généralité : il faut connaître des indicateurs spécifiques non seulement
aux jeux de caractères, mais aussi aux langues (français, polonais,
arabe, chinois, etc.). UTF-8 est un cas particulier, car il est
généralement facile de prouver qu'un texte n'est *pas* en UTF-8.
Dans le cas particulier où tu n'aurais que CP1252 et CP850 à l'exclusion
de tout autre, et que du français, il y a quelques tests assez simples
qui devraient fonctionner la plupart du temps. Par exemple, les
minuscules accentuées du français sont toutes dans 0x9C ou 0xE0..0xFF
pour la table CP1252, alors qu'elles sont toutes dans 0x81..0x98 pour
CP850. Ainsi, compter le nombre de caractères dans chaque zone (avant
d'appeler iconv(), mais peut-être aussi après pour vérifier) peut te
donner un indice assez pertinent. Il peut être utile d'y rajouter les
majuscules accentuées, mais avec un poids moins important : surtout les
trois caractères Ç, É et À qui se retrouvent plus facilement en début
de phrases.
|