SORU
22 EYLÜL 2009, Salı


HTML kodlama sorunları "A" karakteri yerine " gösteriliyor; "

Eski bir uygulama sadece yaramazlık başlıyor, emin değilim ne için var. ActivePDF ile PDF raporları evine döndü HTML bir grup oluşturur.

İşlem şu şekilde çalışır:

  1. Bir HTML içinde belirteçleri ile bir DB değiştirilmesi şablon çekme ("", "", vb.) ~Müşteriadı~ ~Adı~ ör
  2. Gerçek veri ile simgeleri değiştirin
  3. Derli toplu, basit bir düzenli ifade ile mülkiyet biçimleri HTML etiketi öznitelik değerleri (ActivePDF işleme motoru bir şey ama tek tırnak sevmiyor çünkü tırnak işaretleri sağlar, öznitelik değerleri etrafında etc) HTML işlev
  4. PDF oluşturan bir web hizmetine HTML gönderin.

Bir yerde bu karmaşa, olmayan sonu boşluk HTML şablonu ( s) kodlama olarak ISO-8859-1, böylece onlar ortaya yanlış olarak bir "A" karakteri görüntülerken belgenin bir tarayıcı (FireFox). ActivePDF non-UTF8 bu karakterler üzerine kusmuş.

Benim sorum: beri bilmiyorum nerde sorun kaynaklanıyor ve vaktimiz yok araştırmak, kolay bir yolu var yeniden kodlamak veya Bul ve değiştir kötü karakterler? Bu küçük işlevi ile birlikte, ama attım göndermeye çalıştımtüm bu gobbledegook dönüşürbir ş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ÜZENLEME:

Pek iyi bir çözüm gibi görünse de şimdilik bu işi, ben

Private Shared Function ReplaceNonASCIIChars(ByVal html As String) As String
    Return Regex.Replace(html, "[^\u0000-\u007F]", " ")
End Function

CEVAP
22 EYLÜL 2009, Salı


Bu karmaşa içinde bir yerlerde, HTML şablonu (ler) bölünemez boşluk kadar yanlış bir "" karakter . A olarak göstermek için bu ISO-8859-1 kodlama vardır

Bu UTF-8 kodlaması o zaman,-8859-1, ISO değil. Olmayan sonu boşluk karakteri bayt 0xA0 ISO-8859-1; zaman kodlanmış UTF-8 olacak 0xC2,0xA0, eğer (yanlış) görünüm olarak ISO-8859-1 çıkıyor " ". Bunun farkında olmayabilir hangi sondaki nbsp içerir; eğer bu byte değil eğer doğru değilse, o zaman başka bir şey belgenizi parçalanmış ve ne olduğunu öğrenmek için daha fazla görmek istiyoruz.

Regexp nedir, nasıl şablon çalışır? Eğer   dizeleri (doğru) U 00A0 bölünemez BOŞLUK karakteri dönüştürülüyor eğer uygun bir HTML ayrıştırıcı bir yere dahil olacak. Eğer öyleyse, sadece şablon DOM doğal süreç ve ASCII kodlaması ASCII olmayan karakterler karakter referans olarak tutmak için kullanarak serialise için sorabilirsiniz. O da her zaman son derece tehlikeli bir iş olan HTML kendisini post-processing düzenli yapmak zorunda bırakır.

Her neyse, şimdi eklemek için:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

belgenizi baş ve eğer o doğru bak tarayıcıda hale bakın. Eğer öyleyse o zaman kalan herhangi bir sorun ActivePDF suçu.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Caroline Saquet

    Caroline Saq

    1 EKİM 2011
  • engineerguy

    engineerguy

    10 Ocak 2010
  • NPR

    NPR

    22 NİSAN 2006