sql >> Database >  >> RDS >> Mysql

Converteer bestand van Cp1252 naar utf -8 java

Een manier om het conversieproces te verifiëren, is door de charset-decoder en encoder te configureren om fouten te voorkomen in plaats van de foutieve tekens stilzwijgend te vervangen door speciale tekens:

CharsetDecoder inDec=Charset.forName("windows-1252").newDecoder()
  .onMalformedInput(CodingErrorAction.REPORT)
  .onUnmappableCharacter(CodingErrorAction.REPORT);

CharsetEncoder outEnc=StandardCharsets.UTF_8.newEncoder()
  .onMalformedInput(CodingErrorAction.REPORT)
  .onUnmappableCharacter(CodingErrorAction.REPORT);

try(FileInputStream is=new FileInputStream(filepath);
    BufferedReader reader=new BufferedReader(new InputStreamReader(is, inDec));
    FileOutputStream fw=new FileOutputStream(destpath);
    BufferedWriter out=new BufferedWriter(new OutputStreamWriter(fw, outEnc))) {

    for(String in; (in = reader.readLine()) != null; ) {
        out.write(in);
        out.newLine();
    }
}

Merk op dat de output-encoder hier is geconfigureerd voor symmetrie, maar UTF-8 is in staat om elk Unicode-teken te coderen, maar als je het symmetrisch doet, zal het helpen als je dezelfde code wilt gebruiken voor het uitvoeren van andere conversies.

Houd er verder rekening mee dat dit niet helpt als het invoerbestand zich in een andere codering bevindt, maar een verkeerde interpretatie van de bytes leidt tot geldige tekens. Een ding om te overwegen is of de invoercodering "windows-1252" betekende eigenlijk de standaardcodering van het systeem (en of dat echt hetzelfde is). Bij twijfel kunt u Charset.defaultCharset() . gebruiken in plaats van Charset.forName("windows-1252") wanneer de daadwerkelijk beoogde conversie default is → UTF-8 .




  1. Hoe de geboortedatum van het php-formulier te verzamelen en in mysql in te voegen?

  2. Lettertypekleur voor opmerkingen wijzigen in MySQL Workbench-query

  3. SQL Regex-functie die vergelijkbaar is met de MySql REGEX-functie

  4. Hoe Percona Server voor MySQL voor hoge beschikbaarheid te implementeren