Search code examples
asp-classicunicode-escapes

Classic ASP Convert Latin Characters to Unicode Escape Strings


I need a Classic ASP function that will take a string such as Jämshög and convert it to J\u00e4msh\u00f6gso that all the accented characters become their equivalent unicode escape codes.

I am sending this data in a JSON string to an API that requires all special characters to use unicode escape codes.

I've been searching for what seems like hours to come up with a solution and I haven't managed to come close. Any help would be greatly appreciated.


Solution

  • Take a look at the function from aspjson below. It also handles non-unicode characters that must to be escaped such as quote, tab, line-feed etc. Luckily no dependencies, so works stand-alone too.

    Function jsEncode(str)
        Dim charmap(127), haystack()
        charmap(8)  = "\b"
        charmap(9)  = "\t"
        charmap(10) = "\n"
        charmap(12) = "\f"
        charmap(13) = "\r"
        charmap(34) = "\"""
        charmap(47) = "\/"
        charmap(92) = "\\"
    
        Dim strlen : strlen = Len(str) - 1
        ReDim haystack(strlen)
    
        Dim i, charcode
        For i = 0 To strlen
            haystack(i) = Mid(str, i + 1, 1)
    
            charcode = AscW(haystack(i)) And 65535
            If charcode < 127 Then
                If Not IsEmpty(charmap(charcode)) Then
                    haystack(i) = charmap(charcode)
                ElseIf charcode < 32 Then
                    haystack(i) = "\u" & Right("000" & Hex(charcode), 4)
                End If
            Else
                haystack(i) = "\u" & Right("000" & Hex(charcode), 4)
            End If
        Next
    
        jsEncode = Join(haystack, "")
    End Function