2011-04-21 37 views
11

Java'da, html özel karakter dizilerini html kodlu içeriğe dönüştürmek için üçüncü taraf bir kaynak var mı yoksa hızlı komut mu var? hızlı bir şeyi test etmek HTML öğeleri bir dize dönüştürmek istiyorsanızhtml içeriğinde özel karakter kodları nasıl kodlanır

Original code:  <>&abcdef © 
After encoding: &lt;&gt;&amp;abcdef&copy; 
+0

Böyle bir girişiniz varsa (HTML'siz çıkışsız HTML ile karıştırılmış), zaten potansiyel olarak değerlendirildiniz. HTML özel karakterlerinden kaçınmak, gerçek HTML ile belirsizliği önlemek için özellikle ileride çözülmesi mümkün olmayabilir. – deceze

+0

Yukarıdaki örnek tam olarak olduğu gibi yapılamaz. Metniniz geçerli bir HTML değildir ve uygun davranışı düzgün bir şekilde tanımlayamadığınız için araçları bulamazsınız ve geçerli HTML'de düzgün şekilde çalışan programlar yazamazsınız. – Notinlist

+0

Ben java kullanıyorum ... – Roshan

cevap

6

, bu bir gibi webservices kullanabilirsiniz: Örneğin:

http://www.primitivetype.com/resources/htmlentities.php

[değiştir] Java için, Apache Commons Lang'den StringEscapeUtils'i kullanabilirsiniz. Konuyu bakınız: Recommended method for escaping HTML in Java

import static org.apache.commons.lang.StringEscapeUtils.escapeHtml; 
// ... 
String source = "The less than sign (<) and ampersand (&) must be escaped before using them in HTML"; 
String escaped = escapeHtml(source); 

yukarıda bahsedilen parçacığından örnek ödünç.

+0

Eğer kodu yapmak istiyorsanız, –

+0

java – Roshan

+0

içinde bir çözüm istediğimizi söyleyeyim. << olarak değiştirileceğini düşünüyorum. < – Roshan

2

< → & lt dönüştürme; Nümerik asitler; ILLUSTRATORNG. quot;

& → & amp; Bilginin

Kaynak: http://hu.php.net/manual/en/function.htmlspecialchars.php

+0

değiştirilmeden div içinde sembolden daha az istemiyorum javascript veya herhangi bir dil kolayca. – Notinlist

+0

Teşekkürler! Sadece bu denklik "tablo" için arıyordum ... Unfortunatelly, bağlantı bozuk ama ana chars var :) –

0

yakından PHP'nin varsayılan htmlspecialchars (str) çoğaltmak için bazı java kodu Mümkün olduğunca:

İlk nasıl PHP'nin htmlspecialchars(str) eserleri bakmak sağlar:

php> echo htmlspecialchars("abc\ndef"); 
abc 
def 
php> echo htmlspecialchars("abc&def"); 
abc&amp;def 
php> echo htmlspecialchars("abc<>\"&def"); 
abc&lt;&gt;&quot;&amp;def 
php> echo htmlspecialchars("abc<>\"&d'ef"); 
abc&lt;&gt;&quot;&amp;d'ef 
php> echo htmlspecialchars("abc< >\"&d'ef"); 
abc&lt; &gt;&quot;&amp;d'ef 
php> echo htmlspecialchars("abc def"); 
abc def 
php> 

Notlar: olduğu gibi

  1. Spaces ve satırbaşları tutulur.
  2. Tanımlanan varlıklar örnek başına bir kez değiştirilir.
  3. Telif hakkı © ve euro sembolü gibi ekstra kanatlar olduğu gibi tutulur.

kodu:

public class Main{ 
    public static void main(String[] args) { 
     System.out.println("'" + stringToHtmlString("&") + "'"); 
     System.out.println("'" + stringToHtmlString("<") + "'"); 
     System.out.println("'" + stringToHtmlString(">") + "'"); 
     System.out.println("'" + stringToHtmlString(" ") + "'"); 
     System.out.println("'" + stringToHtmlString("  ") + "'"); 
     System.out.println("'" + stringToHtmlString("&<>abc") + "'"); 
     System.out.println("'" + stringToHtmlString("abc&<>") + "'"); 
    } 
    public static final String stringToHtmlString(String s){ 
     StringBuffer sb = new StringBuffer(); 
     int n = s.length(); 
     for (int i = 0; i < n; i++) { 
      char c = s.charAt(i); 
      switch (c) { 
      case '<': sb.append("&lt;"); break; 
      case '>': sb.append("&gt;"); break; 
      case '&': sb.append("&amp;"); break; 
      case '"': sb.append("&quot;"); break; 
      default: sb.append(c); break; 
      } 
     } 
     return sb.toString(); 
    } 
} 

yazdırır:

[email protected] ~ $ java Main 
'&amp;' 
'&lt;' 
'&gt;' 
' ' 
'  ' 
'&amp;&lt;&gt;abc' 
'abc&amp;&lt;&gt;' 

Bu PHP'nin htmlspecialchars(str) fonksiyonun mükemmel klon değil, ama benim için yeterince yakın.

İşte Karartılmış karakter setleri için html varlık dönüşümleri yapar ki başka bir şeydir:

public String toHTML(String str) { 
    String out = ""; 
    for (char c: str.toCharArray()) { 
     if(!Character.isLetterOrDigit(c)) 
      out += String.format("&#x%x;", (int)c); 
     else 
      out += String.format("%s", c); 

    } 
    return out; 
} 

: http://www.rgagnon.com/javadetails/java-0306.html

0

Bu eski, ama sahip ve kabul edilen cevabı yok, bu benim sürüm katiyen saf java Harika beyaz html5 ve utf-8 çalışır. (Kötü ingilizce için özür dilerim).

İlgili konular