SSRS как декодировать символы иностранных языков - PullRequest
0 голосов
/ 07 июня 2011

Я передаю эту строку в отчет: Economia e Administração

Но в отчете отображается следующее: Economia e Administração

В URL он кодируется как: Economia%20e%20Administra%C3%83%C2%83%C3%82%C2%A7%C3%83%C2%83%C3%82%C2%A3o%20

Я пытался использовать URLDecode, но он не работает.

Есть идеи?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 09 июня 2011

Вот мое решение ... В родительском отчете преобразуйте строку в строку байтового массива и передайте ее в дочерний отчет:

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 & "|")
    Next i
      Return builder.ToString().TrimEnd("|") 
    End Function

В отчете Child передайте строку байтового массива в функцию 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

Прекрасно работает для меня.

0 голосов
/ 07 июня 2011

Похоже, что он дважды конвертируется в UTF-8, т. Е. Закодированная строка кодируется снова.Исходная строка передается как Unicode или UTF-8 или что-то еще?

ИСПРАВЛЕНИЕ: она преобразуется в UTF-8 три раза!

...