|
Débuté par Bruno, 22 juin 2012 17:19 - 4 réponses |
| |
| | | |
|
| |
Posté le 22 juin 2012 - 17:19 |
Bonjour,
Je constitue un fichier XML encodé en UTF-8. J'utise donc pour toutes mes chaines : ChaineVersUTF8. Mais le resultat est surprenant : quand j'ouvre le fichier avec xmlnotepad par exemple les caractères accentués sont remplacés par des caractères bizarres (è par è). Par contre quand je n'utilise pas ChaineVersUTF8 le résultat est correct. Est-ce normal ?
Merci
-- Bruno A |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 99 messages |
|
Posté le 22 juin 2012 - 19:56 |
Bonjour,
Dans l'aide de XMLOuvre, on trouve ceci : "Si l'encodage n'est pas précisé dans le document XML, l'encodage UTF-8 est utilisé par défaut."
Je suppose que c'est valable pour la plupart des fonctions par défaut, XML étant à la base prévu pour UTF-8. Il est donc tout à fait possible que WD réalise une conversion implicite, ayant une légère tendance à tout traiter dans des encodages un peu obscurs. A noter, le fait de convertir une chaine UTF-8 en UTF-8 n'est jamais bon, et n'apporte en général que des ennuis. Certainement à cause du fait qu'il utilise implicitement des règles de conversion, et qu'il ne travaille pas au niveau caractère, donc, il ne lit pas les caractères, mais des codes, qu'il interprétera comme étant d'un autre encodage que UTF-8 ( alors que c'est en déjà ! ) et donc il va les convertir à nouveau. Pour prendre un exemple simple : è en UTF-8, se transcrit C3 A8 au niveau hexa. Donc le ChaineVersUTF8 lit cela, comme les caractères non-UTF8 ( et donc latin1, son encodage par défaut ) C3, puis A8, car il n'est pas au courant qu'ils ont déjà en UTF8. Et en latin1, C3, corresponds au A tilde, A8 au tréma. Qu'il s'empresse de convertir en UTF-8 ! On a donc en sortie ( en UTF-8 ! ) un A tilde, et un tréma. Mystère résolu.
Bonne journée !
Bruno a écrit dans le message de news <4fe46e34$1@news.pcsoft.fr> :
Bonjour,
Je constitue un fichier XML encodé en UTF-8. J'utise donc pour toutes mes chaines : ChaineVersUTF8. Mais le resultat est surprenant : quand j'ouvre le fichier avec xmlnotepad par exemple les caractères accentués sont remplacés par des caractères bizarres (è par è). Par contre quand je n'utilise pas ChaineVersUTF8 le résultat est correct. Est-ce normal ?
Merci
-- Bruno A
-- Comme je le disais à juste titre à mon ami serveur : EHLO World. |
| |
| |
| | | |
|
| | |
| |
Posté le 25 juin 2012 - 11:41 |
Il se trouve que Hegesippe Espace a formulé :
Bonjour,
Dans l'aide de XMLOuvre, on trouve ceci : "Si l'encodage n'est pas précisé dans le document XML, l'encodage UTF-8 est utilisé par défaut."
Je suppose que c'est valable pour la plupart des fonctions par défaut, XML étant à la base prévu pour UTF-8. Il est donc tout à fait possible que WD réalise une conversion implicite, ayant une légère tendance à tout traiter dans des encodages un peu obscurs. A noter, le fait de convertir une chaine UTF-8 en UTF-8 n'est jamais bon, et n'apporte en général que des ennuis. Certainement à cause du fait qu'il utilise implicitement des règles de conversion, et qu'il ne travaille pas au niveau caractère, donc, il ne lit pas les caractères, mais des codes, qu'il interprétera comme étant d'un autre encodage que UTF-8 ( alors que c'est en déjà ! ) et donc il va les convertir à nouveau. Pour prendre un exemple simple : è en UTF-8, se transcrit C3 A8 au niveau hexa. Donc le ChaineVersUTF8 lit cela, comme les caractères non-UTF8 ( et donc latin1, son encodage par défaut ) C3, puis A8, car il n'est pas au courant qu'ils ont déjà en UTF8. Et en latin1, C3, corresponds au A tilde, A8 au tréma. Qu'il s'empresse de convertir en UTF-8 ! On a donc en sortie ( en UTF-8 ! ) un A tilde, et un tréma. Mystère résolu.
Bonne journée !
Merci pour la réponse. En effet en poussant mes tests j'ai constaté ce que tu dis. Il ne faut rien faire car le xlsdoxument est implicitement en UTF-8. Par contre quand on utilise un fichier texte + xmlecrit + XMLConstruitChaîne, je pense qu'il faut faire les conversions car on a le choix de l'encodage à la fin.
-- Bruno A |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 08 janvier 2016 - 18:42 |
Procedure WS_RotasGoogleMaps(enderecoOrigem is string, enderecoDestino is string) : string
IF enderecoOrigem = "" OR enderecoDestino = "" THEN RESULT(Null) END
GloVoceEnderecoLongo = "ERRO" GloDestinoEnderecoLongo = "ERRO" GloTempoDestino = "" GloDistanciaDestino = "" GloHtmlInstructions = "" GloPoligonalGoogle = "" GloDistanciaCarro = 0 GloTempoCarro = 0 GloNortelatitude = 0 GloNorteLongitute = 0 GloSullatitude = 0 GloSulLongitute = 0
HTTPCreateForm("GoogleMaps") HTTPAddParameter("GoogleMaps","origin", enderecoOrigem) HTTPAddParameter("GoogleMaps","destination", enderecoDestino) HTTPAddParameter("GoogleMaps","language", "pt-BR") HTTPAddParameter("GoogleMaps","region", "br") HTTPAddParameter("GoogleMaps","units", "metric") HTTPAddParameter("GoogleMaps","key","AIzaSyDbSVKYPwB1a-_vPbDzAr6LgAfIj4iW2hc")
cMyRequest is HTTPRequest cMyRequest..URL = "https://maps.googleapis.com/maps/api/directions/xml" cMyRequest..Method = httpGet
cMyResponse is httpResponse = HTTPSendForm("GoogleMaps", cMyRequest)
IF cMyResponse..StatusCode <> 200 THEN RESULT(Null) END
xmlGoogle is XMLDocument = XMLOpen(cMyResponse..Content, fromString) IF NOT xmlGoogle.DirectionsResponse.status..Text ~= "OK" THEN RESULT(Null) END
GloVoceEnderecoLongo = xmlGoogle.DirectionsResponse.route.leg.start_address GloDestinoEnderecoLongo = xmlGoogle.DirectionsResponse.route.leg.end_address GloTempoCarro = xmlGoogle.DirectionsResponse.route.leg.duration.value GloTempoDestino = xmlGoogle.DirectionsResponse.route.leg.duration.text GloDistanciaCarro = xmlGoogle.DirectionsResponse.route.leg.distance.value GloDistanciaDestino = xmlGoogle.DirectionsResponse.route.leg.distance.text GloPoligonalGoogle = xmlGoogle.DirectionsResponse.route.overview_polyline.points GloNortelatitude = xmlGoogle.DirectionsResponse.route.bounds.northeast.lat GloNorteLongitute = xmlGoogle.DirectionsResponse.route.bounds.northeast.lng GloSullatitude = xmlGoogle.DirectionsResponse.route.bounds.southwest.lat GloSulLongitute = xmlGoogle.DirectionsResponse.route.bounds.southwest.lng
Resultado is string Contador is int = 1 FOR EACH legNode OF xmlGoogle.DirectionsResponse.route.leg IF legNode..Name = "step" THEN HTML is string = legNode.html_instructions Distancia is int = legNode.distance.value Resultado += Contador + ". " + HTML + " [" + Distancia + "]" + CR Contador++ END END
GloHtmlInstructions = Resultado
RESULT(Resultado)
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.blogspot.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 24 mars 2016 - 20:42 |
PREZADOS,
USE O COMANDO UTF8ToString OU AnsiToUnicode
ProcedureWS_Android_IOS_HTTPGetResult()
bufResHTTP is Buffer sHTTPResult isstring
bufResHTTP=HTTPGetResult(httpResult)
IFIniOSMode() =TrueORIniOSSimulatorMode() =TrueORIniOSEmulatorMode() =True IFStringCount(bufResHTTP, “ISO-8859-1”,IgnoreCase) =0THEN sHTTPResult=UTF8ToString(bufResHTTP) ELSE sHTTPResult=AnsiToUnicode(bufResHTTP) END ELSE IFInAndroidMode() =TrueORInAndroidSimulatorMode() =TrueORInAndroidEmulatorMode() =True
sHTTPResult=bufResHTTP END
RESULTsHTTPResult
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.blogspot.com.br/ |
| |
| |
| | | |
|
| | | | |
| | |
|