मुझे कुछ फ्रांसीसी पाठ को यूटीएफ 8 में परिवर्तित करने में कुछ समस्याएं आ रही हैं ताकि इसे कंसोल, टेक्स्ट फ़ाइल या जीयूआई तत्व में ठीक से प्रदर्शित किया जा सके।जावा में यूटीएफ -8 वर्ण एन्कोडिंग
मूल स्ट्रिंग
HANDICAP╔ES
जो
HANDICAPÉES
कोड स्निपेट कि दिखाता है कि कैसे मैं jackcess डाटाबेस ड्राइवर का उपयोग कर रहा पढ़ने के लिए है माना जाता है है एक ग्रहण/लिनक्स पर्यावरण में Acccess एमडीबी फ़ाइल में।
Database database = Database.open(new File(filepath));
Table table = database.getTable(tableName, true);
Iterator rowIter = table.iterator();
while (rowIter.hasNext()) {
Map<String, Object> row = this.rowIter.next();
// convert fields to UTF
Map<String, Object> rowUTF = new HashMap<String, Object>();
try {
for (String key : row.keySet()) {
Object o = row.get(key);
if (o != null) {
String valueCP850 = o.toString();
// String nameUTF8 = new String(valueCP850.getBytes("CP850"), "UTF8"); // does not work!
String valueISO = new String(valueCP850.getBytes("CP850"), "ISO-8859-1");
String valueUTF8 = new String(valueISO.getBytes(), "UTF-8"); // works!
rowUTF.put(key, valueUTF8);
}
}
} catch (UnsupportedEncodingException e) {
System.err.println("Encoding exception: " + e);
}
}
कोड आप देखेंगे जहाँ मैं UTF8, जो काम करने के लिए प्रतीत नहीं होता है करने के लिए सीधे परिवर्तित करना चाहते हैं में, तो मैं एक डबल रूपांतरण करना है। यह भी ध्यान रखें कि जैकस ड्राइवर का उपयोग करते समय एन्कोडिंग प्रकार निर्दिष्ट करने का कोई तरीका प्रतीत नहीं होता है।
धन्यवाद, कैम
यह यूटीएफ -8 नहीं बल्कि सीपी 850 है। – Joey
क्या आप कह रहे हैं कि मूल स्ट्रिंग CP850 है? मुझे एहसास है कि मूल स्ट्रिंग यूटीएफ -8 नहीं थी, हालांकि मुझे यकीन नहीं था कि कौन सा सटीक एन्कोडिंग है। यह यूटीएफ -8 है कि मैं इसे बदलने की कोशिश कर रहा हूं ताकि यह ठीक से प्रदर्शित हो सके। और यह मेरी समझ है कि ए चरित्र यूटीएफ -8 द्वारा समर्थित है। धन्यवाद। – cambo
'╔' जब आप CP1252 में 'É' लेते हैं और इसे CP850 के रूप में समझते हैं तो आपको मिलता है। – Joey