#reporting-services #character #decode
#службы отчетов #символ #декодировать
Вопрос:
Я передаю эту строку в отчет: Economia e Administração
Но в отчете отображается следующее: Economia e Administração
В URL он кодируется как: Economia e Administração
Я пытался использовать URLDecode, но это не работает.
Есть идеи?
Спасибо!
Ответ №1:
Похоже, что он преобразуется в UTF-8 дважды, т. Е. закодированная строка кодируется снова. Передается ли исходная строка как Unicode или UTF-8 или что-то еще?
ИСПРАВЛЕНИЕ: он преобразуется в UTF-8 три раза!
Комментарии:
1. Спасибо за ваш ответ! Исходная строка передается родительским отчетом, я не знаю, какой метод SSRS использует для передачи строки, я просто знаю, что она передается в URL.
Ответ №2:
Вот мое решение…В родительском отчете преобразуйте строку в строку массива байтов и передайте ее в дочерний отчет:
Function GetStringBytes(ByVal theString As String) As String
Dim bytes() As Byte = System.Text.Encoding.UTF8.GetBytes(theString, 0, theString.Length)
Dim builder As New System.Text.StringBuilder
For Each i As Integer In bytes
builder.Append(i amp; "|")
Next i
Return builder.ToString().TrimEnd("|")
End Function
В дочернем отчете передайте строку массива байтов приведенной ниже функции getString, чтобы преобразовать ее обратно в исходную строку:
Function GetString(ByVal theBytes As String) As String
Dim byts() As Byte = New Byte(theBytes.Split("|").Length) {}
Dim count As Integer = 0
For Each i As String In theBytes.Split("|")
byts(count) = Convert.ToInt32(i)
count = 1
Next i
Return UTF8ByteArrayToString(byts)
End Function
Function UTF8ByteArrayToString(ByVal theChars As Byte()) As String
Dim aEncoding As System.Text.UTF8Encoding = New System.Text.UTF8Encoding()
Dim aConstructedString As String = aEncoding.GetString(theChars)
Return aConstructedString
End Function
Для меня работает идеально.