2011-02-01 9 views
22

बस आश्चर्य करें कि दृश्य के पीछे क्या है।एन्कोडिंग और सर्वलेट एपीआई: setContentType या setCharacterEncoding

  • response.setContentType("text/html; charset=UTF-8")
  • response.setCharacterEncoding("UTF-8")

क्या अंतर है: वास्तव में यह हम साथ एन्कोडिंग सेट कर सकते हैं कि लगता है?

उत्तर

28

javadoc अंतर के बारे में बहुत स्पष्ट है:

void setCharacterEncoding(String charset) सेट प्रतिक्रिया के वर्ण एन्कोडिंग (MIME चारसेट) उदाहरण के लिए, UTF-8 में ग्राहक को भेजा जा रहा है। यदि वर्ण एन्कोडिंग पहले से ही setContentType(java.lang.String) या setLocale(java.util.Locale) द्वारा निर्धारित किया गया है, तो यह विधि इसे ओवरराइड करती है। setContentType(java.lang.String) को text/html की स्ट्रिंग के साथ कॉल करना और यूटीएफ -8 की स्ट्रिंग के साथ इस विधि को कॉल करना setContentType को text/html; charset=UTF-8 के स्ट्रिंग के साथ कॉल करने के बराबर है।


void setContentType(String type) सेट प्रतिक्रिया की सामग्री प्रकार ग्राहक के लिए भेजा जा रहा है, अगर प्रतिक्रिया अभी तक प्रतिबद्ध नहीं किया गया है। दिए गए सामग्री प्रकार में एक वर्ण एन्कोडिंग विनिर्देश शामिल हो सकता है, उदाहरण के लिए, text/html;charset=UTF-8

+0

@ सेबेस्टियन: यह दो स्पष्ट प्रश्न हैं, आपको इसे दो पदों में विभाजित करना चाहिए। – skaffman

+0

किया गया: http://stackoverflow.com/questions/4865208/bad-encoding-of-streamed-csv-with-stripes-tomcat –

+3

मुझे कुछ याद आ रहा है: 'setContentType ("text/html"); सेट कैरेक्टर एन्कोडिंग ("यूटीएफ -8"); 'सेटकंटेंट टाइप (" टेक्स्ट/एचटीएमएल; वर्णसेट = यूटीएफ -8 ") के बराबर है; 'या बस' सेट कैरेक्टर एन्कोडिंग (" यूटीएफ -8 "); 'क्या करेगा? –

संबंधित मुद्दे