PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → HTMLVERSTEXTE IOS
HTMLVERSTEXTE IOS
Débuté par Popoy, 12 nov. 2020 13:44 - 4 réponses
Membre enregistré
3 347 messages
Popularité : +93 (137 votes)
Posté le 12 novembre 2020 - 13:44
Bonjour a tous,
Je viens de constater que sous iOS la Fonction htmlverstexte remplace certains caractères unicode par des points d'interrogation.
Je tiens a préciser que si j'affecte la chaine de caractère directement a un champ html ou de saisie, les caractères ne sont pas modifiés.
Le problème n'apparait pas sous Android, ou en mode go mais seulement sur le simulateur (xcode) et sur l'appareil.
Je crois me souvenir qu'il existait un code avant que la fonction existe.
Si quelqu'un peut me partager un code de remplacement.
Merci d'avance.
Membre enregistré
3 347 messages
Popularité : +93 (137 votes)
Posté le 18 novembre 2020 - 10:32
Je me répond a moi même
Voici mon propre code de HTML VERS TEXTE
//Clic du bouton
//SAI_Texte1 = HTMLVersTexte(SAI_Texte_HTML) //mets des ?
sMontexte est une chaîne UNICODE
sMontexte = SAI_Texte_HTML
SAI_Texte1 = HTMLATexte(sMontexte)

//La fonction HTMLATexte
Procedure HTMLATexte(sMonTexteHTML est une chaîne UNICODE)
// renvoie le contenu texte du html

i est un entier
nBaliseOuvre, nBaliseFerme sont des entiers // nombre de balises < et >
sCarac est une chaîne UNICODE
sMessage est une chaîne UNICODE = ""
sTexte est une chaîne UNICODE

nBaliseOuvre = 0
nBaliseFerme = 0

sTexte = sMonTexteHTML

// RC notation unix : Caract(10)
// RC notation Mac : Caract(13)
// RC notation Windows : Caract(10)+Caract(13)
sTexte = Remplace(sTexte, RC, "%RC%")
sTexte = Remplace(sTexte, Caract(10), "%RC%")
sTexte = Remplace(sTexte, Caract(13), "%RC%")
// on met tout au format Windows
sTexte = Remplace(sTexte, "%RC%", RC)

// on remplace les balise <BR> par des %RC%
sTexte = Remplace(sTexte, "<BR>", "%RC%")
sTexte = Remplace(sTexte, "<br>", "%RC%")

// on parcourt chaque caractère
POUR i=1 À Taille(sTexte)
// caractère lu
sCarac=sTexte[[i]]
SELON sCarac
CAS "<"
nBaliseOuvre++
CAS ">"
nBaliseFerme++
AUTRE CAS
// si on a autant de balises ouvertes que de fermées, c'est du texte
SI nBaliseOuvre=nBaliseFerme ALORS
// on NE garde PAS le texte contenu dans la balise TITLE
SI Position(sTexte[[1 À i]],"<TITLE>",1,SansCasse)=0 OU Position(sTexte[[i À]],"</TITLE>",1,SansCasse)=0
// c'est du texte
sMessage += sCarac
FIN
FIN
FIN
FIN

// on remplace les balise %RC% par des rc
sMessage = Remplace(sMessage, "%RC%", RC)

//Élimine les RC en trop
sMessage = RazLigneVide(sMessage)

// caractères spécifiques au HTML dans mon cas je n'ai pas besoin de les gérer car je n'en ai pas dans mon code HTML
//mais si besoin il faut rajouter un code par exemple
//sMessage = Remplace(sMessage,""", """")

RENVOYER sMessage

//FONCTION RazLigneVide
Procedure RazLigneVide(LOCAL p_sChaine est une chaîne,p_bRcTab est un booléen =Vrai)
// Initialisation des variables locales
sRetVal est une chaîne = ""
sChaine est une chaîne

// Détermine si le paramètre n'est pas vide
SI p_sChaine <> "" ALORS
// Boucle de parcours de la variable "p_sChaine"
POUR TOUTE chaîne sChaine de p_sChaine SEPAREE PAR RC
sChaine = SansEspace(Remplace(sChaine,[RC,TAB],""))

SI SansEspace(sChaine) <> "" ALORS
SELON p_bRcTab
CAS Faux : sRetVal += SansEspace(sChaine)+TAB
CAS Vrai : sRetVal += SansEspace(sChaine)+RC
FIN
FIN
FIN

// On supprime de la chaîne le dernier RC
SI sRetVal <> "" ALORS
SELON p_bRcTab
CAS Faux : sRetVal = sRetVal[[1 À Taille(sRetVal)-1]]
CAS Vrai : sRetVal = sRetVal[[1 À Taille(sRetVal)-2]]
FIN
FIN
FIN

RENVOYER sRetVal
Membre enregistré
3 347 messages
Popularité : +93 (137 votes)
Posté le 18 novembre 2020 - 10:36
// caractères spécifiques au HTML
//sMessage = Remplace(sMessage,""", """")
Membre enregistré
3 347 messages
Popularité : +93 (137 votes)
Posté le 18 novembre 2020 - 10:37
// caractères spécifiques au HTML
//sMessage = Remplace(sMessage,"&quot;", """")
Membre enregistré
3 347 messages
Popularité : +93 (137 votes)
Posté le 18 novembre 2020 - 10:39
désolé mais le forum n'accepte pas les quot dans le code