Önce böyle UTF-8 veya UTF-16 olarak dosyanızı kodlayan içinde ne olduğunu bilmek gerekir. Başlamak için bu dosyayı üreten nedir?
Bundan sonra, nispeten basittir - yalnızca FileReader
yerine bir InputStreamReader
ürününe sarılmış bir FileInputStream
oluşturmanız gerekir. (FileReader
her zaman sistem için varsayılan kodlamayı kullanır.) InputStreamReader
'u oluştururken kullanılacak kodlamayı belirtin ve doğru olanı seçtiyseniz, her şey çalışmaya başlamalıdır.
Bunu kontrol etmek için OpenCSV kullanmanıza gerek olmadığını unutmayın - sadece dosyanın metnini okuyabilir ve yazdırabilirsiniz. ASCII olmayan karakterleri işlemek için System.out
'a güveneceğime emin değilim - karakterlerin tek tek değerlerini tamsayı olarak (tercihen onaltılık olarak) yazdırmak gibi farklı bir dizeyi incelemek isteyebilirsiniz. daha sonra bunları charts at unicode.org ile karşılaştırarak. Öte yandan, doğru kodlamayı deneyin ve EDIT'e
... başlamak ne görebiliyordu: Tamam, UTF-8 kullanıyorsanız eğer öyleyse:
CSVReader reader=new CSVReader(
new InputStreamReader(new FileInputStream("d:\\a.csv"), "UTF-8"),
',', '\'', 1);
String[] line;
while ((line = reader.readNext()) != null) {
StringBuilder stb = new StringBuilder(400);
for (int i = 0; i < line.length; i++) {
stb.append(line[i]);
stb.append(";");
}
System.out.println(stb);
}
(Umarım dosyayı gerçek kodunuzda kapatmak için bir try/finally bloğuna sahip olmalısınız.)