2009-03-01 9 views
36

का उपयोग कर टेक्स्ट पर वापस HTML कैरेक्टर कनवर्ट करें मैं जावा मानक लाइब्रेरी का उपयोग कर कुछ HTML वर्णों को वापस टेक्स्ट में कनवर्ट करना चाहता हूं। मैं सोच रहा था कि कोई पुस्तकालय मेरे उद्देश्य को प्राप्त करेगा या नहीं?जावा मानक लाइब्रेरी

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    // TODO code application logic here 

    // "Happy & Sad" in HTML form. 
    String s = "Happy & Sad"; 
    System.out.println(s); 

    try { 
     // Change to "Happy & Sad". DOESN'T WORK! 
     s = java.net.URLDecoder.decode(s, "UTF-8"); 
     System.out.println(s); 
    } catch (UnsupportedEncodingException ex) { 

    } 
} 

उत्तर

53

मुझे लगता है कि जकार्ता कॉमन्स लैंग लाइब्रेरी की StringEscapeUtils.escapeHtml() और unescapeHtml() पद्धतियों के लिए आप क्या देख रहे हैं। http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/StringEscapeUtils.html देखें।

+1

कुछ ऐसा करना आसान है जैसे यूआरएल : http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/StringEscapeUtils.html – Reu

+0

मृत घोड़े को मारने के लिए नहीं, लेकिन ओपी क्या पूछ रहा था कि HTML इकाइयों के बीच अनुवाद कैसे करें और "सादा" पाठ (जो मेरे लिए ASCII है, लेकिन वाईएमएमवी)। ऊपर जकार्ता लिब में अनचेस्पेक्ट (और एस्केप HTML) है, जो चाल करता है। URLDecoder अभी भी प्रतिशत-एन्कोडिंग URL स्ट्रिंग्स (जैसे पैरामीटर प्राप्त करें) के लिए काम करता है। – jjohn

+0

एंड्रॉइड के मामले में कोई भी समर्थन कैसे करेगा, कोई विचार? – CoDe

2

मुझे मानक पुस्तकालय का उपयोग करने के किसी भी तरीके से अवगत नहीं है। लेकिन मैं जानता हूं और इस वर्ग का उपयोग करता हूं जो एचटीएमएल इकाइयों से संबंधित है।

"htmlentities एक खुला स्रोत जावा वर्ग है कि (htmlentities, unhtmlentities, ...) विशेष और विस्तारित वर्ण एचटीएमएल entitities में और इसके विपरीत परिवर्तित करने के लिए स्थिर तरीकों का संग्रह होता है।" केवल

http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=htmlentities

7

java.net.URLDecoder सौदों application/x-www-form-urlencoded MIME प्रारूप के साथ (जैसे कि "20%" अंतरिक्ष का प्रतिनिधित्व करता है), HTML character entities के साथ नहीं। मुझे नहीं लगता कि इसके लिए जावा प्लेटफॉर्म पर कुछ भी है। आप रूपांतरण करने के लिए अपनी खुद की उपयोगिता कक्षा लिख ​​सकते हैं, जैसे this one

5

यूआरएल डिकोडर का उपयोग केवल HTML फॉर्म द्वारा उत्पन्न यूआरएल से स्ट्रिंग डीकोडिंग के लिए किया जाना चाहिए जो "एप्लिकेशन/एक्स-www-form-urlencoded" माइम प्रकार में हैं। यह एचटीएमएल अक्षरों का समर्थन नहीं करता है।

search के बाद मुझे HTML Parser लाइब्रेरी में Translate कक्षा मिली।

+0

बहुत अच्छी लाइब्रेरी, अब Miguel

24

यहां आपको अपने आवेदन में lib jsoup में जार फ़ाइल जोड़नी है और फिर इस कोड का उपयोग करना होगा।

import org.jsoup.Jsoup; 

public class Encoder { 
    public static void main(String args[]) { 
     String s = Jsoup.parse("<Français>").text(); 
     System.out.print(s); 
    } 
} 

लिंक jsoup डाउनलोड करने के लिए: http://jsoup.org/download

+0

यह स्वीकार्य उत्तर होना चाहिए। अद्भुत Jsoup की तुलना में कोई अन्य पुस्तकालय तेज़ नहीं है और न ही आयात करना आसान है। – Grux

+0

बहुत बढ़िया। यह जवाब है। –

0

रूप @jem सुझाव दिया है, यह jsoup उपयोग करना संभव है।

जेएसओपी 1.8.3 के साथ यह विधि पार्सर.इन्सस्केप एंटीटी का उपयोग करने के लिए संभव है जो मूल HTML को बनाए रखता है।

import org.jsoup.parser.Parser; 
... 
String html = Parser.unescapeEntities(original_html, false); 

ऐसा लगता है कि कुछ पिछली रिलीज में यह विधि मौजूद नहीं है।

1

आप वर्ग org.apache.commons.lang.StringEscapeUtils उपयोग कर सकते हैं:

String s = StringEscapeUtils.unescapeHtml("Happy & Sad") 

यह काम कर रहा है।

+0

मैं इस समाधान को पसंद करता हूं। जब संभव हो तो मैं अपाचे libs का उपयोग करने का सुझाव देता हूं। (मेरी राय) –