SSRS как декодировать символы иностранного языка

#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
  

Для меня работает идеально.