У мене застарілий додаток лише починає погано поводитись, з якої причини я не впевнений. Це створює купу HTML, яка перетворюється на PDF-звіти від ActivePDF.
Процес працює так:
- Витягніть HTML-шаблон із БД, в якому будуть замінені маркери (наприклад, "~ CompanyName ~", "~ CustomerName ~" тощо)
- Замініть жетони реальними даними
- Введіть HTML з простою функцією регулярного вираження, яка властивість формує значення атрибутів HTML-тегів (забезпечує лапки тощо), оскільки механізм візуалізації ActivePDF ненавидить нічого, крім одиничних лапок навколо значень атрибутів)
- Надішліть HTML веб-службі, яка створює PDF.
Десь у цьому безладі нерозривні пробіли з шаблонів HTML
кодують як ISO-8859-1, щоб вони відображалися неправильно як символ "Â" під час перегляду документа в браузері (FireFox). ActivePDF натягує на ці символи, що не належать до UTF8.
Моє запитання: оскільки я не знаю, звідки виникає проблема і не встигаю її дослідити, чи існує простий спосіб перекодувати або знайти та замінити погані символи? Я спробував надіслати його через цю маленьку функцію, яку я зібрав разом, але це все перетворює на gobbledegook, нічого не змінює.
Private Shared Function ConvertToUTF8(ByVal html As String) As String
Dim isoEncoding As Encoding = Encoding.GetEncoding("iso-8859-1")
Dim source As Byte() = isoEncoding.GetBytes(html)
Return Encoding.UTF8.GetString(Encoding.Convert(isoEncoding, Encoding.UTF8, source))
End Function
Будь-які ідеї?
Редагувати:
Я зараз переймаюся цим, хоча це навряд чи здається хорошим рішенням:
Private Shared Function ReplaceNonASCIIChars(ByVal html As String) As String
Return Regex.Replace(html, "[^\u0000-\u007F]", " ")
End Function