Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

pb d'encodage texte lors de l'import via api (python3)

  • pberthol
  • pberthol's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
7 years 3 months ago - 7 years 3 months ago #145170 by pberthol
Bonjour,
j'ai un soucis de programation : j'ai les accent qui foire lors de la prévisualisation après import de questionnaire avec python3
Code:
# -*- coding: utf-8 -*-

import base64
from limesurveyrc2api import LimeSurveyRemoteControl2API
 
file='mon questionnaire.lss'
with open(file,'r') as content_file:
    fichier = content_file.read()
##traitement divers sur fichier
    b64fichier=base64.b64encode(bytes(fichier,'utf-8')).decode('utf-8')
    api.surveys.import_survey(session_key,b64fichier, 'lss', 'monquestionnaire', 161129)

ce que j’obtiens en prévisualisant une question sur le questionnaire importé :

Vous avez assistéÂ


ce que j'aurais du avoir :

Vous avez assisté


avez vous une idée ? , je ne comprend pas mon erreur.

en vous remerciant
Last edit: 7 years 3 months ago by pberthol.
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 years 3 months ago #145175 by DenisChenu
Salut,

Shui nul en, python (il faut absolument que je m'y mette, le pythin c'est bien ;) ).

Mais tu as un moyen de vérifier le retour de bytes(fichier,'utf-8') ?
Et pourquoi tu decode ensuite en utf-8 ?

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
  • pberthol
  • pberthol's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
7 years 3 months ago #145185 by pberthol
Mais tu as un moyen de vérifier le retour de bytes(fichier,'utf-8') ?
le retour de bytes sur la même phrase c'est ça :

b'Vous avez assist\xc3\x83\xc2\xa9\xc3\x82\xc2\xa0'


le charabia correspond effectivement à ça :

éÂ


changement de méthode via :
Code:
b64fichier=base64.b64encode(fichier.encode()).decode()
même soucis d'encodage

Et pourquoi tu decode ensuite en utf-8 ?

je suis obligé de décoder sinon le texte est au format byte et l'import ne fonctionne pas.
The topic has been locked.
  • pberthol
  • pberthol's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
7 years 3 months ago #145218 by pberthol
bon j'ai finalement résolu le pb,
malgrès le fait que tout soit en utf8 le fait le fichier soit traité dans un enviroement windows il fallaiut mettre :
Code:
b64fichier=base64.b64encode(bytes(fichier, 'cp1252')).decode()
The following user(s) said Thank You: DenisChenu
The topic has been locked.
Moderators: Nickko

Lime-years ahead

Online-surveys for every purse and purpose