Quelqu'un a-t-il déjà utilisé PyRTF avec un encodage autre que latin-1 ?
(par exemple UTF-8ou UTF-16).
J'aimerais avoir un retour d'expérience car je n'arrive pas à générer correctement
un document lorsque je dois y mettre des chaînes UTF-8.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
jean-michel bain-cornu
Bonjour,
Quelqu'un a-t-il déjà utilisé PyRTF avec un encodage autre que latin-1 ? (par exemple UTF-8ou UTF-16). J'aimerais avoir un retour d'expérience car je n'arrive pas à générer correctement un document lorsque je dois y mettre des chaînes UTF-8. Tu peux préciser les difficultés que tu rencontres ?
Théoriquement, il y a juste à convertir les chaînes utf8 en latin1, indépendamment de l'outil utilisé, en faisant par exemple : chaineUnicode.encode('latin-1') A+ jm
Bonjour,
Quelqu'un a-t-il déjà utilisé PyRTF avec un encodage autre que latin-1 ?
(par exemple UTF-8ou UTF-16).
J'aimerais avoir un retour d'expérience car je n'arrive pas à générer
correctement
un document lorsque je dois y mettre des chaînes UTF-8.
Tu peux préciser les difficultés que tu rencontres ?
Théoriquement, il y a juste à convertir les chaînes utf8 en latin1,
indépendamment de l'outil utilisé, en faisant par exemple :
chaineUnicode.encode('latin-1')
A+
jm
Quelqu'un a-t-il déjà utilisé PyRTF avec un encodage autre que latin-1 ? (par exemple UTF-8ou UTF-16). J'aimerais avoir un retour d'expérience car je n'arrive pas à générer correctement un document lorsque je dois y mettre des chaînes UTF-8. Tu peux préciser les difficultés que tu rencontres ?
Théoriquement, il y a juste à convertir les chaînes utf8 en latin1, indépendamment de l'outil utilisé, en faisant par exemple : chaineUnicode.encode('latin-1') A+ jm
Méta-MCI
Bonjour !
En RTF, les caractères unicode sont codés en décimal, précédés de 'u' et suivis de '?' Par exemple, le caractère unichr(1234) est codé : u1234? De plus, pour les codes > 32767, il faut enlever 65536 (ils deviennent donc négatifs).
Je ne sais pas comment sont gérés les surrogates.
Petit question annexe : travailles-tu avec la version d'origine (0.45) de PyRTF, ou avec celle que j'ai (très légèrement) modifiée ?
@-salutations
Michel Claveau
Bonjour !
En RTF, les caractères unicode sont codés en décimal, précédés de 'u' et
suivis de '?'
Par exemple, le caractère unichr(1234) est codé : u1234?
De plus, pour les codes > 32767, il faut enlever 65536 (ils deviennent donc
négatifs).
Je ne sais pas comment sont gérés les surrogates.
Petit question annexe : travailles-tu avec la version d'origine (0.45) de
PyRTF, ou avec celle que j'ai (très légèrement) modifiée ?
En RTF, les caractères unicode sont codés en décimal, précédés de 'u' et suivis de '?' Par exemple, le caractère unichr(1234) est codé : u1234? De plus, pour les codes > 32767, il faut enlever 65536 (ils deviennent donc négatifs).
Je ne sais pas comment sont gérés les surrogates.
Petit question annexe : travailles-tu avec la version d'origine (0.45) de PyRTF, ou avec celle que j'ai (très légèrement) modifiée ?
@-salutations
Michel Claveau
Olivier Ravard
jean-michel bain-cornu wrote:
Bonjour,
Quelqu'un a-t-il déjà utilisé PyRTF avec un encodage autre que latin-1 ? (par exemple UTF-8ou UTF-16). J'aimerais avoir un retour d'expérience car je n'arrive pas à générer correctement un document lorsque je dois y mettre des chaînes UTF-8. Tu peux préciser les difficultés que tu rencontres ?
Théoriquement, il y a juste à convertir les chaînes utf8 en latin1, indépendamment de l'outil utilisé, en faisant par exemple : chaineUnicode.encode('latin-1')
Pour préciser :
Je lis des caractères depuis un fichier catalogue encodé en UTF-8. L'encodage par défaut de ma distrib python est UTF-8. Lorsque je fais : section.append( 'éàè') -> ça marche
section.append('xc3xa9xc3xa0xc3xa8') -> marche pas. La chaîne donnée correspond à 'éàè' encodée en utf-8.
section.append('xc3xa9xc3xa0xc3xa8'.decode('utf-8').encode('latin-1')) -> ça marche (comme tu l'as suggéré)
OK. Mais le problème est que je veux créer un fichier avec des caractères qui ne peuvent pas s'encoder en latin-1 (chinois par exemple) :
section.append('xe7xb7xa8xe7xa8x8b'.decode('utf-8').encode('latin-1')) -> et là, j'ai une exception UnicodeEncodeError
A+ jm
jean-michel bain-cornu wrote:
Bonjour,
Quelqu'un a-t-il déjà utilisé PyRTF avec un encodage autre que latin-1 ?
(par exemple UTF-8ou UTF-16).
J'aimerais avoir un retour d'expérience car je n'arrive pas à générer
correctement
un document lorsque je dois y mettre des chaînes UTF-8.
Tu peux préciser les difficultés que tu rencontres ?
Théoriquement, il y a juste à convertir les chaînes utf8 en latin1,
indépendamment de l'outil utilisé, en faisant par exemple :
chaineUnicode.encode('latin-1')
Pour préciser :
Je lis des caractères depuis un fichier catalogue encodé en UTF-8.
L'encodage par défaut de ma distrib python est UTF-8.
Lorsque je fais :
section.append( 'éàè')
-> ça marche
section.append('xc3xa9xc3xa0xc3xa8')
-> marche pas. La chaîne donnée correspond à 'éàè' encodée en utf-8.
section.append('xc3xa9xc3xa0xc3xa8'.decode('utf-8').encode('latin-1'))
-> ça marche (comme tu l'as suggéré)
OK. Mais le problème est que je veux créer un fichier avec des caractères qui
ne peuvent pas s'encoder en latin-1 (chinois par exemple) :
section.append('xe7xb7xa8xe7xa8x8b'.decode('utf-8').encode('latin-1'))
-> et là, j'ai une exception UnicodeEncodeError
Quelqu'un a-t-il déjà utilisé PyRTF avec un encodage autre que latin-1 ? (par exemple UTF-8ou UTF-16). J'aimerais avoir un retour d'expérience car je n'arrive pas à générer correctement un document lorsque je dois y mettre des chaînes UTF-8. Tu peux préciser les difficultés que tu rencontres ?
Théoriquement, il y a juste à convertir les chaînes utf8 en latin1, indépendamment de l'outil utilisé, en faisant par exemple : chaineUnicode.encode('latin-1')
Pour préciser :
Je lis des caractères depuis un fichier catalogue encodé en UTF-8. L'encodage par défaut de ma distrib python est UTF-8. Lorsque je fais : section.append( 'éàè') -> ça marche
section.append('xc3xa9xc3xa0xc3xa8') -> marche pas. La chaîne donnée correspond à 'éàè' encodée en utf-8.
section.append('xc3xa9xc3xa0xc3xa8'.decode('utf-8').encode('latin-1')) -> ça marche (comme tu l'as suggéré)
OK. Mais le problème est que je veux créer un fichier avec des caractères qui ne peuvent pas s'encoder en latin-1 (chinois par exemple) :
section.append('xe7xb7xa8xe7xa8x8b'.decode('utf-8').encode('latin-1')) -> et là, j'ai une exception UnicodeEncodeError
A+ jm
Olivier Ravard
Méta-MCI wrote:
Bonjour !
En RTF, les caractères unicode sont codés en décimal, précédés de 'u' et suivis de '?' Par exemple, le caractère unichr(1234) est codé : u1234? De plus, pour les codes > 32767, il faut enlever 65536 (ils deviennent donc négatifs). Sachant celà est-t-il possible d'écrire tout caractère unicode ?
Pourtant lorsque je fais par exemple section.append('u7de8u7a0b'), je n'ai pas le résultat espéré...
Je ne sais pas comment sont gérés les surrogates.
Petit question annexe : travailles-tu avec la version d'origine (0.45) de PyRTF, ou avec celle que j'ai (très légèrement) modifiée ?
Je travaille avec la version originale. Quelles sont les modifs de ta version ?
@-salutations
Michel Claveau
Méta-MCI wrote:
Bonjour !
En RTF, les caractères unicode sont codés en décimal, précédés de 'u' et
suivis de '?'
Par exemple, le caractère unichr(1234) est codé : u1234?
De plus, pour les codes > 32767, il faut enlever 65536 (ils deviennent donc
négatifs).
Sachant celà est-t-il possible d'écrire tout caractère unicode ?
Pourtant lorsque je fais par exemple section.append('u7de8u7a0b'), je
n'ai pas le résultat espéré...
Je ne sais pas comment sont gérés les surrogates.
Petit question annexe : travailles-tu avec la version d'origine (0.45) de
PyRTF, ou avec celle que j'ai (très légèrement) modifiée ?
Je travaille avec la version originale. Quelles sont les modifs de ta version ?
En RTF, les caractères unicode sont codés en décimal, précédés de 'u' et suivis de '?' Par exemple, le caractère unichr(1234) est codé : u1234? De plus, pour les codes > 32767, il faut enlever 65536 (ils deviennent donc négatifs). Sachant celà est-t-il possible d'écrire tout caractère unicode ?
Pourtant lorsque je fais par exemple section.append('u7de8u7a0b'), je n'ai pas le résultat espéré...
Je ne sais pas comment sont gérés les surrogates.
Petit question annexe : travailles-tu avec la version d'origine (0.45) de PyRTF, ou avec celle que j'ai (très légèrement) modifiée ?
Je travaille avec la version originale. Quelles sont les modifs de ta version ?
@-salutations
Michel Claveau
Méta-MCI
Bonsoir.
Les modifs, c'est pas grand chose :
dans Renderer.py : - supprimé une ligne "FontPanose", dans _WriteFonts - ajouté ' par' dans LINE (2 endroits) (ces deux points, pour adapter au genre de RTF que je manipule).
puis : - fait un distutils, pour faire une installation plus "pythonesque"
C'est tout...
Pour le reste : "section.append('u7de8u7a0b')" Attention, le code doit être en DECIMAL, pas en hexa. Et puis, il faut un caractère "?" pour terminer chaque caractère.
@-salutations
Michel Claveau
Bonsoir.
Les modifs, c'est pas grand chose :
dans Renderer.py :
- supprimé une ligne "FontPanose", dans _WriteFonts
- ajouté ' par' dans LINE (2 endroits)
(ces deux points, pour adapter au genre de RTF que je manipule).
puis :
- fait un distutils, pour faire une installation plus "pythonesque"
C'est tout...
Pour le reste : "section.append('u7de8u7a0b')" Attention, le code doit
être en DECIMAL, pas en hexa. Et puis, il faut un caractère "?" pour
terminer chaque caractère.
dans Renderer.py : - supprimé une ligne "FontPanose", dans _WriteFonts - ajouté ' par' dans LINE (2 endroits) (ces deux points, pour adapter au genre de RTF que je manipule).
puis : - fait un distutils, pour faire une installation plus "pythonesque"
C'est tout...
Pour le reste : "section.append('u7de8u7a0b')" Attention, le code doit être en DECIMAL, pas en hexa. Et puis, il faut un caractère "?" pour terminer chaque caractère.
@-salutations
Michel Claveau
Olivier Ravard
Méta-MCI wrote:
Bonsoir.
Les modifs, c'est pas grand chose :
dans Renderer.py : - supprimé une ligne "FontPanose", dans _WriteFonts - ajouté ' par' dans LINE (2 endroits) (ces deux points, pour adapter au genre de RTF que je manipule).
puis : - fait un distutils, pour faire une installation plus "pythonesque"
C'est tout...
Pour le reste : "section.append('u7de8u7a0b')" Attention, le code doit être en DECIMAL, pas en hexa. Et puis, il faut un caractère "?" pour terminer chaque caractère.
Yes! ça marche. J'arrive à générer mon pdf avec des caractères chinois... Merci...
Olivier
@-salutations
Michel Claveau
Méta-MCI wrote:
Bonsoir.
Les modifs, c'est pas grand chose :
dans Renderer.py :
- supprimé une ligne "FontPanose", dans _WriteFonts
- ajouté ' par' dans LINE (2 endroits)
(ces deux points, pour adapter au genre de RTF que je manipule).
puis :
- fait un distutils, pour faire une installation plus "pythonesque"
C'est tout...
Pour le reste : "section.append('u7de8u7a0b')" Attention, le code doit
être en DECIMAL, pas en hexa. Et puis, il faut un caractère "?" pour
terminer chaque caractère.
Yes! ça marche. J'arrive à générer mon pdf avec des caractères chinois...
Merci...
dans Renderer.py : - supprimé une ligne "FontPanose", dans _WriteFonts - ajouté ' par' dans LINE (2 endroits) (ces deux points, pour adapter au genre de RTF que je manipule).
puis : - fait un distutils, pour faire une installation plus "pythonesque"
C'est tout...
Pour le reste : "section.append('u7de8u7a0b')" Attention, le code doit être en DECIMAL, pas en hexa. Et puis, il faut un caractère "?" pour terminer chaque caractère.
Yes! ça marche. J'arrive à générer mon pdf avec des caractères chinois... Merci...
Olivier
@-salutations
Michel Claveau
Méta-MCI
Salut !
Tant mieux, si ça marche. Merci de l'avoir indiqué, car il y a souvent des messages dont on ne sait pas le devenir.
Par contre, pour le chinois, j'émet des réserves : à ma connaissance, RTF sait juste représenter des caractères unicodes (et encore, si on a la bonne police), mais ne gère pas d'autres notions (unicode), comme le sens d'écriture, ou la composition.
Allez : 263A (en UTF-8 : E2 98 BA)
@-salutations -- Michel Claveau
Salut !
Tant mieux, si ça marche.
Merci de l'avoir indiqué, car il y a souvent des messages dont on ne sait
pas le devenir.
Par contre, pour le chinois, j'émet des réserves : à ma connaissance, RTF
sait juste représenter des caractères unicodes (et encore, si on a la bonne
police), mais ne gère pas d'autres notions (unicode), comme le sens
d'écriture, ou la composition.
Tant mieux, si ça marche. Merci de l'avoir indiqué, car il y a souvent des messages dont on ne sait pas le devenir.
Par contre, pour le chinois, j'émet des réserves : à ma connaissance, RTF sait juste représenter des caractères unicodes (et encore, si on a la bonne police), mais ne gère pas d'autres notions (unicode), comme le sens d'écriture, ou la composition.