PDA

View Full Version : سوال: مشکل با تابع UTF8_Decode



abolfazl-z
دوشنبه 27 آذر 1391, 10:38 صبح
سلام دوستان

نمی دوونم چرا بعضی از کاراکتر ها در برخی مواقع تبدیل به "؟؟" می شوند ؟؟؟؟؟
فارسی هستند ولی بعضی ها اینطوری می شوند؟!!!:متفکر:

مشکل از چیی هست ؟؟؟؟

با تشکر

تابع



Public Function UTF8_Encode(ByVal sStr As String)
Dim L As Long, lChar As Long, sUTF8 As String
For L& = 1 To Len(sStr)
lChar& = AscW(Mid(sStr, L&, 1))
If lChar& < 128 Then
sUTF8$ = sUTF8$ + Mid(sStr, L&, 1)
ElseIf ((lChar& > 127) And (lChar& < 2048)) Then
sUTF8$ = sUTF8$ + Chr(((lChar& \ 64) Or 192))
sUTF8$ = sUTF8$ + Chr(((lChar& And 63) Or 128))
Else
sUTF8$ = sUTF8$ + Chr(((lChar& \ 144) Or 234))
sUTF8$ = sUTF8$ + Chr((((lChar& \ 64) And 63) Or 128))
sUTF8$ = sUTF8$ + Chr(((lChar& And 63) Or 128))
End If
Next L&
UTF8_Encode = sUTF8$
End Function

'Farsi nevisi
Public Function UTF8_Decode(ByVal sStr As String)
Dim L As Long, sUTF8 As String, iChar As Integer, iChar2 As Integer
sStr = Replace(sStr, "U^Œ", UTF8_Encode("i'"))
sStr = Replace(sStr, "U`‰", UTF8_Encode("i'"))
For L = 1 To Len(sStr)
iChar = Asc(Mid(sStr, L, 1))
If iChar > 127 Then
If Not iChar And 32 Then
iChar2 = Asc(Mid(sStr, L + 1, 1))
sUTF8 = sUTF8 & ChrW$(((31 And iChar) * 64 + (63 And iChar2)))
L = L + 1
Else
Dim iChar3 As Integer
iChar2 = Asc(Mid(sStr, L + 1, 1))
iChar3 = Asc(Mid(sStr, L + 2, 1))
'sUTF8 = sUTF8 & ChrW$(((iChar And 15) * 16 * 256) + ((iChar2 And 63) * 64) + (iChar3 And 63))
L = L + 2
End If
Else
sUTF8 = sUTF8 & Chr$(iChar)
End If
Next L
UTF8_Decode = sUTF8
End Function

Public Function EncodeString(StrText As String) As String
On Error Resume Next
Dim I As Integer, bEnc As String
For I = 1 To Len(StrText)
bEnc = bEnc & "%" & Hex(Asc(Mid(StrText, I, 1)))
Next
EncodeString = bEnc
End Function




دوستان کمک کنید :افسرده:

niksalehi
دوشنبه 27 آذر 1391, 12:07 عصر
فکر میکنم عدد ها اینطوری میشن، درسته؟

abolfazl-z
دوشنبه 27 آذر 1391, 13:17 عصر
آره یه جوراییی ولی من عدد بیشتر دیدم اینطوری بشه :متفکر:

مشکل چیه ؟؟؟؟ :متفکر:

niksalehi
دوشنبه 27 آذر 1391, 21:22 عصر
والا دقیق نمیدونم اما میدونم اگه از hexagora unicode control استفاده کنی مشکل حل میشه!
سرچ کنید تو فروم هست.
موفق باشید