2016-04-05 24 views
0

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(); 
    /* */ 
    } 
} 

cevap

0

Bunda kodlamayı kurmayı unuttuğu satır:

String content = new String(Files.readAllBytes(Paths.get(fileName))); 

sadece bu deneyin:

public static void main(String[] args) throws IOException { 

    String countryStr = new String(readTextFile("src/data/countryToParse.sql"), "UTF-8"); 
    writeToTextFile("src/data/countryParsed.sql", countryStr); 
} 

public static byte[] readTextFile(String fileName) throws IOException { 
    return Files.readAllBytes(Paths.get(fileName)); 
} 
+0

çözüldü! Teşekkür ederim Nicolas – miguels

+0

@miguels İyi Haberler! –

İlgili konular