2011-09-25 14 views
10

मैं निम्नलिखित कोड के साथ एक्सएमएल के लिए एक फ़ाइल को पढ़ने के लिए कोशिश कर रहा हूँ:स्केला में UTF-8 में xml पढ़

import scala.xml._ 

object HebrewToEnglishCityTranslator { 

    val data = XML.loadFile("cities_hebrew_utf.xml"); 

    for(val entry <- data \\ "city") { 
    val hebrewName = (entry \\ "hebrew_name").text 
    val englishName = (entry \\ "english_name").text 
    println(hebrewName + "=" + englishName) } 

हालांकि, मेरी फाइल UTF-8 में एन्कोड किया गया है (हिब्रू वर्ण) और एक्सएमएल एन्कोडिंग है val encoding = "ISO-8859-1"

मुझे क्या करना चाहिए?

+0

एक्सएमएल फ़ाइल की पहली पंक्ति ' 'जैसी है? –

+0

नहीं - यह oshai

+1

कि 'वैल एन्कोडिंग' केवल लोडिंग के लिए नहीं, सहेजने के लिए उपयोग किया जाता है। –

उत्तर

13

आप XML.load(reader: java.io.Reader) का उपयोग करना चाहिए, जो आप फ़ाइल एनकोडिंग निर्दिष्ट करने की अनुमति देता है:


XML.load(new java.io.InputStreamReader(new java.io.FileInputStream("cities_hebrew_utf.xml"), "UTF-8")) 
3

उपयोग InputStream निर्माता के बजाय स्ट्रिंग निर्माता। स्ट्रीम बनाम रीडर एक्सएमएल का अच्छा स्पष्टीकरण यहां पढ़ रहा है: Producing valid XML with Java and UTF-8 encoding

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