У меня есть вещь, проблема здесь отладочные выходыVB.NET Преобразование Unicode 8 (UTF8) в Стационарный американский ASCII
"?uƒn74tn5187r&key=6e6e0936c4e6c48be56a72eba8964df0"
должен быть
"?u=83n74tn5187r&key=6e6e0936c4e6c48be56a72eba8964df0"
Я попытался решение от другой подобный вопрос, и это подвело меня.
Dim uni As Byte() = Encoding.GetEncoding(437).GetBytes("?uƒn74tn5187r&key=6e6e0936c4e6c48be56a72eba8964df0")
Dim Ascii As String = Encoding.ASCII.GetString(uni)
Ascii = "?u?n74tn5187r&key=6e6e0936c4e6c48be56a72eba8964df0"
Я предполагаю, что я должен угадать 437 .. возможно перебором всех чисел до матча ?u=83
от ?uƒ
Действительно я пытаюсь чтобы прочитать Unicode-32 (текст в формате Brasil от электронной почты (POP3). Теперь, когда я думаю об этом, =83
может быть испорчен, используя эту функцию здесь.
Но остроумие hout эта функция, тело электронной почты POP3 будет содержать, может быть, бесполезный вариант urlencode(), но .. вместо %20
он использует =20
.
Интересно, как это исправить.
Public Shared Function DecodeQuotedPrintable(ByVal Message As String, Optional ByVal QuickClean As Boolean = False) As String
'set up StringBuilder object with data stripped of any line continuation tags
Dim Msg As New StringBuilder(Message.Replace("=" & vbCrLf, vbNullString))
If QuickClean Then 'perform a quick clean (clean up common basics)
Return Msg.Replace("=" & vbCrLf, vbNullString).Replace("=0D", vbCr).Replace("=0A", _
vbLf).Replace("=20", " ").Replace("=3D", "=").ToString
Else 'perform total cleaning
'store 2-character hex values that require a leading "0"
Dim HxData As String = "X0102030405060708090A0B0C0D0E0F"
For Idx As Integer = 1 To &HF 'initially process codes 1-15, which require a leading zero
Msg.Replace("=" & Mid(HxData, Idx << 1, 2), Chr(Idx)) 'replace hex data with single character code (SHIFT is faster)
Next
For idx As Integer = &H10 To &HFF 'process the whole 8-bit extended ASCII gambit
Msg.Replace("=" & Hex(idx), Chr(idx)) 'replace hex data with single character code
Next
Return Msg.ToString 'return result string
End If
End Function
Edit: Моя попытка фиксируя функцию (если она действительно вызывает проблему, я никогда не буду знать?)
Public Shared Function DecodeQuotedPrintable (ByVal Message As String, Optional ByVal QuickClean As Boolean = False) As String «создан объект StringBuilder с данными раздели ни строки продолжения тегов Dim Msg As New StringBuilder (Message.Replace ("=" & vbCrLf, vbNullString))
If QuickClean Then 'perform a quick clean (clean up common basics)
Return Msg.Replace("=" & vbCrLf, vbNullString).Replace("=0D", vbCr).Replace("=0A", _
vbLf).Replace("=20", " ").Replace("=3D", "=").ToString
Else 'perform total cleaning
'store 2-character hex values that require a leading "0"
Msg.Replace("=" & vbCrLf, vbNullString).Replace("=0D", vbCr).Replace("=0A", _
vbLf).Replace("=20", " ").Replace("=3D", "%$#@[EQUALS]@#$%").ToString()
Dim HxData As String = "X0102030405060708090A0B0C0D0E0F"
For Idx As Integer = 1 To &HF 'initially process codes 1-15, which require a leading zero
Msg.Replace("=" & Mid(HxData, Idx << 1, 2), Chr(Idx)) 'replace hex data with single character code (SHIFT is faster)
Next
For idx As Integer = &H10 To &HFF 'process the whole 8-bit extended ASCII gambit
Msg.Replace("=" & Hex(idx), Chr(idx)) 'replace hex data with single character code
Next
Msg.Replace("%$#@[EQUALS]@#$%", "=")
Return Msg.ToString 'return result string
End If
End Function
круто, поэтому я исправил его, проблема заключалась в том, что он читал параметры URL как кодировку – SSpoke