décodage UTF-8

décodage UTF-8

Messagepar Gob0 » 10 Avr 2009 à 16:04

[syntax="LotusScript"]
Public Class UTF8
Private stComponent As String
Private inComponentPos As Integer
Private inComponentSize As Integer

Public Sub new()
Call setComponentToDecode("")
End Sub

Public Sub setComponentToDecode(stComp As String)
stComponent = stComp
inComponentPos = 0
inComponentSize = Len(stComp)
End Sub

'// Retourne la valeur entiere du prochain caractere de la chaine
Public Function getNextCharInComponent() As Integer
Dim stCar As String
Dim inCar As Integer

inComponentPos = inComponentPos + 1
If (inComponentPos <= inComponentSize) Then
stCar = Mid(stComponent, inComponentPos, 1)
If (stCar = "%") Then
'// on doit lire les 2 caracteres suivants
getNextCharInComponent = Cint("&H" & Ucase(Mid(stComponent, inComponentPos+1, 1)) & Ucase(Mid(stComponent, inComponentPos+2, 1)))
inComponentPos = inComponentPos + 2
Else
getNextCharInComponent = Asc(stCar)
End If
Else
getNextCharInComponent = -1
End If
End Function

'// Décode une valeur "urlEncoded"
Public Function decodeValue(stValue As String) As String
Dim boFini As Boolean
Dim stRetour As String
Dim inCar(3) As Integer

stRetour = ""
Call setComponentToDecode(stValue)
boFini = False
While (boFini = False)
inCar(0) = oUTF8.getNextCharInComponent()
If (inCar(0) > -1) Then
If (inCar(0) < 128) Then
stRetour = stRetour & Chr$(inCar(0))
Elseif ((inCar(0) > 191) And (inCar(0) < 224)) Then
inCar(1) = getNextCharInComponent()
stRetour = stRetour & Chr$((((inCar(0) And 31) * 64) And 255) Or (inCar(1) And 63))
Else
inCar(1) = getNextCharInComponent()
inCar(2) = getNextCharInComponent()
stRetour = stRetour & Chr$((((inCar(0) And 15) * 4096) And 65535) Or (((inCar(1) And 63) * 64) And 255) Or (inCar(2) And 63))
End If
Else
boFini = True
End If
Wend
decodeValue = stRetour
End Function
End Class
[/syntax]


ça s'utilise comme ça:

[syntax="LotusScript"]
dim oUtf8 as UTF8
dim stValeurEncodee as string
dim stValeurDecodee as string

stValeurEncodee = "valeur isssue du query_string (par exemple)"
set oUtf8 = new UTF8()
stValeurDecodee = oUtf8.decodeValue(stValeurEncodee)
[/syntax]

Enjoy ! 8)
Avatar de l’utilisateur
Gob0
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 378
Inscrit(e) le : 23 Août 2006 à 09:19
Localisation : Lausanne

Messagepar oguruma » 18 Avr 2009 à 11:47

ok merci bcp je vais tester cela cet AM (bahhhh ioui le week y fo soccuper)
Bien à vous

http://www.dominoarea.org/oguruma/

Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci

Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)
Avatar de l’utilisateur
oguruma
Super V.I.P.
Super V.I.P.
 
Message(s) : 4086
Inscrit(e) le : 16 Déc 2004 à 08:50
Localisation : LILLE


Retour vers World Wide Web (Web)