Mysql
 sql >> база данни >  >> RDS >> Mysql

Конвертирайте файл от Cp1252 в utf -8 java

Един от начините за проверка на процеса на преобразуване е да конфигурирате декодера и енкодера на набор от знаци, за да спасява грешки, вместо безшумно да заменяте грешните знаци със специални знаци:

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

Имайте предвид, че изходният енкодер е конфигуриран за симетрия тук, но UTF-8 е в състояние да кодира всеки символ на Unicode, но ако го направите симетрично, това ще помогне, след като искате да използвате същия код за извършване на други преобразувания.

Освен това, имайте предвид, че това няма да помогне, ако входният файл е в различно кодиране, но погрешното тълкуване на байтовете води до валидни знаци. Едно нещо, което трябва да имате предвид, е дали входното кодиране "windows-1252" всъщност означаваше кодирането по подразбиране на системата (и дали това наистина е същото). Ако имате съмнения, можете да използвате Charset.defaultCharset() вместо Charset.forName("windows-1252") когато действително планираното преобразуване е defaultUTF-8 .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL GROUP_CONCAT избягва

  2. Проблем с условието WHERE в SQL

  3. Как да поръчам по определена част от низ?

  4. mysql_result() очаква параметър 1 да бъде ресурс, даден е булев

  5. Вземете сумата на MySQL колоната в PHP