В одной из тем на этом форуме ( Источник ) , нашел замечательный генератор QR-кодов. Все хорошо, но он обрезает текст после знака "&". Как можно модифицировать код , чтоб генератор создавал QR-код где присутствовали бы и текст и эти знаки.
В одной из тем на этом форуме ( Источник ) , нашел замечательный генератор QR-кодов. Все хорошо, но он обрезает текст после знака "&". Как можно модифицировать код , чтоб генератор создавал QR-код где присутствовали бы и текст и эти знаки.Lion
Lion, Просто код был не расчитан на спец символы, которые необходимо переводить в формат с % (ну типа как мы часто видим %20 что есть пробел) Вариант 1 При передаче строки заменить символ на "%26"
Код
=SUBSTITUTE(C5&C6&C7;"&";"%26")
вариант 2 все спец символы закодировать
[vba]
Код
Function UTF8_URL_Encode(ByVal sStr As String) 'http://www.nonhostile.com/howto-convert-byte-array-utf8-string-vb6.asp Dim i As Long Dim a As Integer Dim res As String Dim code As String
res = "" For i = 1 To Len(sStr) a = AscW(Mid(sStr, i, 1)) If a < 65 Then code = URLEncodeByte(a) ElseIf a < 128 Then code = Mid(sStr, i, 1) ElseIf ((a > 127) And (a < 2048)) Then code = URLEncodeByte(((a \ 64) Or 192)) code = code & URLEncodeByte(((a And 63) Or 128)) Else code = URLEncodeByte(((a \ 144) Or 234)) code = code & URLEncodeByte((((a \ 64) And 63) Or 128)) code = code & URLEncodeByte(((a And 63) Or 128)) End If res = res & code Next i UTF8_URL_Encode = res End Function
[/vba]
ну и я б наверно это [vba]
Код
ElseIf ((a > 127) And (a < 2048)) Then
[/vba] записал бы так [vba]
Код
ElseIf a < 2048 Then
[/vba] и так понятно что больше 127
Lion, Просто код был не расчитан на спец символы, которые необходимо переводить в формат с % (ну типа как мы часто видим %20 что есть пробел) Вариант 1 При передаче строки заменить символ на "%26"
Код
=SUBSTITUTE(C5&C6&C7;"&";"%26")
вариант 2 все спец символы закодировать
[vba]
Код
Function UTF8_URL_Encode(ByVal sStr As String) 'http://www.nonhostile.com/howto-convert-byte-array-utf8-string-vb6.asp Dim i As Long Dim a As Integer Dim res As String Dim code As String
res = "" For i = 1 To Len(sStr) a = AscW(Mid(sStr, i, 1)) If a < 65 Then code = URLEncodeByte(a) ElseIf a < 128 Then code = Mid(sStr, i, 1) ElseIf ((a > 127) And (a < 2048)) Then code = URLEncodeByte(((a \ 64) Or 192)) code = code & URLEncodeByte(((a And 63) Or 128)) Else code = URLEncodeByte(((a \ 144) Or 234)) code = code & URLEncodeByte((((a \ 64) And 63) Or 128)) code = code & URLEncodeByte(((a And 63) Or 128)) End If res = res & code Next i UTF8_URL_Encode = res End Function