|
Encode / Decode iOS et ANDROID |
Débuté par informatique, 10 mar. 2022 16:14 - 7 réponses |
| |
| | | |
|
| |
Posté le 10 mars 2022 - 16:14 |
Bonjour à vous, Ma question est très simple, pourquoi :
MaChaine est une chaîne UNICODE="Bonjour" Info(Encode(UnicodeVersAnsi(MaChaine),encodeBASE64SansRC))
=> ne renvoie pas la même chaine encodée entre Android et iOS ?
Que faut-il faire pour avoir le même encodage ? J'en ai besoin pour stocker des informations en BDD MySQL mais si le résultat est différent, les mêmes données seront incompatibles entre Android et iOS.
Merci infiniment pour votre aide |
| |
| |
| | | |
|
| | |
| |
Posté le 10 mars 2022 - 18:36 |
Si votre configuration est en mode ANSI le charset par défaut utilisé pour Android est UTF-8 et Latin pour iOS Vous pouvez forcer l'utilisation du même charset en utilisant la fonction ChangeAlphabet ou en passant votre configuration en mode Unicode. Attention des les deux cas, ces changements peuvent avoir des répercutions sur tout les codes qui manipulent des chaines. |
| |
| |
| | | |
|
| | |
| |
Posté le 11 mars 2022 - 08:00 |
wddev a écrit :
Si votre configuration est en mode ANSI le charset par défaut utilisé pour Android est UTF-8 et Latin pour iOS Vous pouvez forcer l'utilisation du même charset en utilisant la fonction ChangeAlphabet ou en passant votre configuration en mode Unicode. Attention des les deux cas, ces changements peuvent avoir des répercutions sur tout les codes qui manipulent des chaines.
Merci wddev pour ces éclaircissements, Dans la configuration du projet Android, je suis bien en UNICODE ("Utiliser des chaines UNICODE en exécution"), pour iOS, il n'y a pas moyen de changer cela.
Je vais voir avec la fonction ChangeAlphabet si je trouve une solution. Merci ! |
| |
| |
| | | |
|
| | |
| |
Posté le 11 mars 2022 - 08:45 |
Malheureusement, la fonction ChangeAlphabet ne change pas le résultat de ma chaine encodée quel que soit l'alphabet
ChangeAlphabet(xxxxxxxx) // quel que soit l'alphabet passé en paramètre MaChaine est une chaîne UNICODE="Bonjour" Info(Encode(UnicodeVersAnsi(MaChaine),encodeBASE64SansRC)) // Le résultat de Encode retourne toujours la même chaine indépendamment de l'alphabet utilisé
J'ai donc toujours 2 chaines encodées différentes pour iOS et Android, or je souhaite récupérer le même résultat sous iOS et Android
Je précise bien que dans la configuration du projet Android je suis sous UNICODE Merci encore |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 458 messages |
|
Posté le 11 mars 2022 - 10:05 |
Bonjour,
Serait-il possible de nous donner ici à quoi ressemblent les 2 chaînes encodées ? Si vous décodez la base64 par exemple avec Notepad++, distinguez-vous une différence ?
Il serait peut-être intéressant aussi de plutôt chercher à tout uniformiser en UTF-8, quel que soit l'encodage de départ, grâce à ChaineVersUtf8()
sTest1 est une chaîne ANSI = "Bonjour !" sTest2 est une chaîne UNICODE = "Bonjour !"
Trace(Encode(sTest1,encodeBASE64))
Trace(Encode(ChaîneVersUTF8(sTest1),encodeBASE64))
Trace(Encode(sTest2,encodeBASE64))
Trace(Encode(ChaîneVersUTF8(sTest2),encodeBASE64))
|
| |
| |
| | | |
|
| | |
| |
Posté le 11 mars 2022 - 10:57 |
bchanudet a écrit :
Bonjour, Serait-il possible de nous donner ici à quoi ressemblent les 2 chaînes encodées ? Si vous décodez la base64 par exemple avec Notepad++, distinguez-vous une différence ? Il serait peut-être intéressant aussi de plutôt chercher à tout uniformiser en UTF-8, quel que soit l'encodage de départ, grâce à ChaineVersUtf8() sTest1 est une chaîne ANSI = "Bonjour !" sTest2 est une chaîne UNICODE = "Bonjour !"
Trace(Encode(sTest1,encodeBASE64))
Trace(Encode(ChaîneVersUTF8(sTest1),encodeBASE64))
Trace(Encode(sTest2,encodeBASE64))
Trace(Encode(ChaîneVersUTF8(sTest2),encodeBASE64))
Merci bchanudet, La solution était bien là !! J'avais pensé à utiliser la fonction ChaineVersUTF8 mais je passais par une variable, or en passant par une variable, cela ne fonctionnait pas?. Encore merci, une bonne épine enlevée du pieds.
Bon dev' |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 125 messages |
|
Posté le 28 décembre 2024 - 18:25 |
informatique a écrit :
bchanudet a écrit : Bonjour,
Serait-il possible de nous donner ici à quoi ressemblent les 2 chaînes encodées ? Si vous décodez la base64 par exemple avec Notepad++, distinguez-vous une différence ?
Il serait peut-être intéressant aussi de plutôt chercher à tout uniformiser en UTF-8, quel que soit l'encodage de départ, grâce à ChaineVersUtf8()
sTest1 est une chaîne ANSI = "Bonjour !" sTest2 est une chaîne UNICODE = "Bonjour !"
Trace(Encode(sTest1,encodeBASE64)) // => "Qm9uam91ciAh" Trace(Encode(ChaîneVersUTF8(sTest1),encodeBASE64)) // => "Qm9uam91ciAh"
Trace(Encode(sTest2,encodeBASE64)) // => "QgBvAG4AagBvAHUAcgAgACEA" Trace(Encode(ChaîneVersUTF8(sTest2),encodeBASE64)) // => "Qm9uam91ciAh"
Merci bchanudet, La solution était bien là !! J'avais pensé à utiliser la fonction ChaineVersUTF8 mais je passais par une variable, or en passant par une variable, cela ne fonctionnait pas?. Encore merci, une bonne épine enlevée du pieds.
Bon dev'
Bonsoir ;
s'il vous plait, comment vous avez pu décoder par la suite ? effectivement le réglage Unicode existe uniquement sur la configuration Android,
là sur IOS, je reçois en équivalent des caractères chinois.
S'il vous plait si vous pouvez me dire comment vous avez pu faire pour le décodage ?
merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 125 messages |
|
Posté le 28 décembre 2024 - 20:26 |
| |
| |
| | | |
|
| | | | |
| | |
|