Emin olmamakla birlikte, yanlış davranmaya başlayan eski bir uygulamam var. ActivePDF tarafından PDF raporlarına dönüştürülen bir grup HTML oluşturur.
İşlem şu şekilde çalışır:
- Değiştirilecek jetonları olan bir DB'den bir HTML şablonu çekin (örn. "~ CompanyName ~", "~ CustomerName ~", vb.)
- Jetonları gerçek verilerle değiştirin
- HTML kod özniteliği değerlerini biçimlendiren basit bir normal ifade işleviyle HTML'yi düzenleyin (ActivePDF'nin oluşturma motoru, öznitelik değerleri etrafında tek tırnaktan başka bir şeyden nefret ettiğinden, tırnak işaretleri vb. Sağlar)
- HTML'yi PDF'yi oluşturan bir web hizmetine gönderin.
Bu karışıklıkta bir yerde, HTML şablonundan / şablonlarından kopmayan boşluklar
, belgeyi bir tarayıcıda (FireFox) görüntülerken yanlış bir "Â" karakteri olarak görünmeleri için ISO-8859-1 olarak kodlanıyor. ActivePDF, UTF8 olmayan bu karakterleri gösterir.
Sorum: Sorunun nereden kaynaklandığını bilmediğimden ve araştırmak için zamanım olmadığından, kötü karakterleri yeniden kodlamanın veya bulmanın ve değiştirmenin kolay bir yolu var mı? Birlikte attığım bu küçük işlevle göndermeyi denedim, ama her şeyi gobbledegook'a çevirir hiçbir şey değiştirmez.
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
Herhangi bir fikir?
DÜZENLE:
Şimdilik bununla uğraşıyorum, ancak iyi bir çözüm gibi görünmüyor:
Private Shared Function ReplaceNonASCIIChars(ByVal html As String) As String
Return Regex.Replace(html, "[^\u0000-\u007F]", " ")
End Function