android - यूटीएफ-8 अक्षरों के साथ एंड्रॉइड वेबव्यू।




webview utf (6)

Derzu का बिट ऊपर बहुत उपयोगी है:

webview.loadData(getString(R.string.info_texto), "text/html; charset=utf-8", "utf-8"); 

मेरे पास एड्रॉइड 2.x पर utf-8 था और 4.x पर गड़बड़ ansi जब तक मैं डाल दिया

 charset=utf-8

wv.loadUrl में जो भी () कॉल करें। विवरण पर उत्कृष्ट ध्यान, Derzu

मैं अपने एंड्रॉइड ऐप में कुछ वेबव्यू का उपयोग कर रहा हूं, लेकिन उन्हें यूटीएफ -8 एन्कोडिंग में प्रदर्शित करने में असमर्थ हैं।

यदि इसका उपयोग करें तो मैं अपने स्कैंडिनेवियाई चार्टर्स नहीं देखूंगा:

mWebView.loadUrl("file:///android_asset/om.html")

और अगर इसे आजमाएं, तो मुझे कुछ भी प्रदर्शित नहीं होगा

mWebView.loadDataWithBaseURL("file:///android_asset/om.html", null, "text/html", "utf-8",null);

सादर


HTTP सर्वर द्वारा वितरित एक HTML पृष्ठ सामग्री एन्कोडिंग निर्दिष्ट कर सकते हैं कि दो तरीके हैं। आमतौर पर, सर्वर HTTP शीर्षलेख में सामग्री एन्कोडिंग निर्दिष्ट करेगा, लेकिन चूंकि यह पृष्ठ किसी फ़ाइल से लोड किया जा रहा है, इसलिए कोई HTTP लेनदेन नहीं है और इसलिए कोई शीर्षलेख नहीं है। नतीजतन, वेबव्यू लैटिन -1 का एक डिफ़ॉल्ट एन्कोडिंग मानता है।

हालांकि, आप <meta> टैग का उपयोग कर एक सामग्री एन्कोडिंग निर्दिष्ट कर सकते हैं। इस प्रकार अपनी एचटीएमएल फाइल का निर्माण करें:

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Title</title>
</head>
Your content following

और उसके बाद इसे mWebView.loadUrl("file:///android_asset/om.html"); का उपयोग करके WebView में लोड करें mWebView.loadUrl("file:///android_asset/om.html"); । जैसा कि आप उम्मीद करते हैं, यह गैर-लैटिन वर्ण प्रदर्शित करना चाहिए।


ऐसा लगता है कि यह किसी रूप या फैशन में हमेशा के लिए टूट गया है। समस्या 1733

LoadData के बजाय loadDataWithBaseURL का उपयोग करें।

// Pretend this is an html document with those three characters
String scandinavianCharacters = "øæå";

// Won't render correctly
webView.loadData(scandinavianCharacters, "text/html", "UTF-8");

// Will render correctly
webView.loadDataWithBaseURL(null, scandinavianCharacters, "text/html", "UTF-8", null);

अब जो हिस्सा वास्तव में परेशान है वह सैमसंग गैलेक्सी एस II (4.0.3) लोडडाटा () पर ठीक काम करता है, लेकिन गैलेक्सी नेक्सस (4.0.2) पर परीक्षण बहु-बाइट वर्णों को तब तक खराब कर दिया जाता है जब तक आप loadDataWithBaseURL ( )। वेबव्यू दस्तावेज़ीकरण

एंड्रॉइड के हाल के संस्करण

कुछ लोडडाटा कॉल के व्यवहार में बदलाव की रिपोर्ट कर रहे हैं, जिसमें माइम mimeType को charset=utf-8

webView.loadData(scandinavianCharacters, "text/html; charset=utf-8", "UTF-8");

आप WebSettings साथ इस फॉर्मूलेशन का भी उपयोग कर सकते हैं

WebView webView = (WebView) findViewById(R.id.DemoWebView);
WebSettings webSettings = webView.getSettings();
webSettings.setDefaultTextEncodingName("utf-8");  
webView.loadData(scandinavianCharacters, "text/html; charset=utf-8", null);

यह आश्चर्यजनक है कि एंड्रॉइड ने अभी भी इस मूल मुद्दे को हल नहीं किया है।


डेटा लोड करने से पहले आप अपने वेबव्यू की सेटिंग्स को संपादित करने का प्रयास कर सकते हैं:

WebSettings settings = mWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");

साथ ही, जैसा कि नीचे दी गई टिप्पणी में प्रदान किया गया है, लोडडेटा कॉल में "charset=utf-8" जोड़ना सुनिश्चित करें:

mWebView.loadData(getString(R.string.info_texto), "text/html; charset=utf-8", "utf-8");

सही सामग्री को हमेशा दिखाने के लिए आपको 3 चीजों को ध्यान में रखना चाहिए:

  1. LoadData funciton के बजाय loadDataWithBaseUrl का उपयोग करना।
  2. मेटा टैग के रूप में HTML फ़ाइल में सही एन्कोडिंग सेट करना
  3. WebSettings में डिफ़ॉल्टTextEncodingName सेट करना

उदाहरण अन्य उत्तरों के माध्यम से प्रदान किए गए हैं इसलिए मैं दोहराना नहीं चाहता!


WebView wv = (WebView) findViewById(R.id.rowWebview);
WebSettings settings = wv.getSettings();
settings.setDefaultTextEncodingName("utf-8");                   
wv.loadData(topHtml, "text/html; charset=utf-8",null);

दोनों का संयोजन मेरे लिए काम करता प्रतीत होता है। किसी कारण से यह एन्कोडिंग पर शून्य और माइम प्रकार में वर्णमाला पसंद करता है: / अजीब। इसने मेरे लिए महीनों के बढ़ने का हल किया है।







utf