2014-02-13 1 views
1

Я использую эту функцию, чтобы декодировать UTF-8:ASP: Я не могу расшифровать некоторые из символов UTF-8 в ISO-8859-1

function DecodeUTF8(s) 
    dim i 
    dim c 
    dim n 
    i = 1 
    do while i <= len(s) 
    c = asc(mid(s,i,1)) 
    if c and &H80 then 
     n = 1 
     do while i + n < len(s) 
     if (asc(mid(s,i+n,1)) and &HC0) <> &H80 then 
      exit do 
     end if 
     n = n + 1 
     loop 
     if n = 2 and ((c and &HE0) = &HC0) then 
     c = asc(mid(s,i+1,1)) + &H40 * (c and &H01) 
     else 
     c = 191 
     end if 
     s = left(s,i-1) + chr(c) + mid(s,i+n) 
    end if 
    i = i + 1 
    loop 

    DecodeUTF8 = s 
end function 

Но есть некоторые probles декодировать, что символы:

€, ƒ «... † ‡ ‰ š œžŸ

В этом случае

с = 191 -> с = '¿'

Я нашел некоторую информацию, связанную с этой проблемой: http://www.i18nqa.com/debug/utf8-debug.html

Знаете ли вы какие-либо функции, чтобы правильно декодировать?

ответ

5
Public Function DecodeUTF8(s) 
    Set stmANSI = Server.CreateObject("ADODB.Stream") 
    s = s & "" 
    On Error Resume Next 

    With stmANSI 
    .Open 
    .Position = 0 
    .CharSet = "Windows-1252" 
    .WriteText s 
    .Position = 0 
    .CharSet = "UTF-8" 
    End With 

    DecodeUTF8 = stmANSI.ReadText 
    stmANSI.Close 

    If Err.number <> 0 Then 
    lib.logger.error "str.DecodeUTF8(" & s & "): " & Err.Description 
    DecodeUTF8 = s 
    End If 
    On error Goto 0 
End Function 
+0

спасибо! Оно работает!! ;) – Andynedine

 Смежные вопросы

  • Нет связанных вопросов^_^