Bir veritabanını Java kullanarak yeni bir şemaya taşımaya ve ayrıştırmaya çalışıyorum. Sorun, Java'daki verileri işlerken sorun yaratan bazı özel karakterler, araplar var.Java kullanarak ayrıştırma Arapça karakterler
: Bunu ayrıştırmak sonra(4, 'Afganistán', 1, 'Afgano', 'Afghanistan', 'AF', 'أفغانستان', 'Afghan', 'أفغاني');
, countryParsed.sql sonuçlanan çizgi olarak görülür:
İşte countryToParse.sql
dosyada olduğu sorun hangi ile ben alıyorum çizgilerin biri
(4, 'Afganistán', 1, 'Afgano', 'Afghanistan', 'AF', 'أ�?غانستان', 'Afghan', 'أ�?غاني');
Bozuklaşan belirli arap karakterlerin nasıl olduğunu görüyorsunuz.
Dosyaları açtığımda, bunların her ikisinin de UTF-8 ile kodlandığını kontrol edebilirim.
Kullanmakta olduğum Java kodu. Üç yollar ekledik writeToTextFile()
yöntemde ben UTF-8 kullanarak bir dosyayı yazmak için bulundu (Onlara üç şekilde kullanarak aynı hatayı alıyorum saymıyorum)
public class MainStackOverflow {
public static void main(String[] args) throws IOException {
String countryStr = new String(readTextFile("src/data/countryToParse.sql").getBytes(), "UTF-8");
writeToTextFile("src/data/countryParsed.sql", countryStr);
}
public static String readTextFile(String fileName) throws IOException {
String content = new String(Files.readAllBytes(Paths.get(fileName)));
return content;
}
public static void writeToTextFile(String fileName, String content) throws IOException {
/* Way 1 */
Files.write(Paths.get(fileName), content.getBytes("UTF-8"), StandardOpenOption.CREATE);
/* Way 2 */
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(fileName), "UTF-8"));
try {
out.write(content);
} finally {
out.close();
}
/* Way 3 */
PrintWriter out1 = new PrintWriter(new File(fileName), "UTF-8");
out1.write(content);
out1.flush();
out1.close();
/* */
}
}
çözüldü! Teşekkür ederim Nicolas – miguels
@miguels İyi Haberler! –