Page 1 sur 1

décodage UTF-8

MessagePublié: 10 Avr 2009 à 16:04
par Gob0
[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)

MessagePublié: 18 Avr 2009 à 11:47
par oguruma
ok merci bcp je vais tester cela cet AM (bahhhh ioui le week y fo soccuper)