Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Java > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 21.12.2018, 10:39   #1
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 113
Репутация: -7
По умолчанию Проблема с UTF 8

Написала код который конвертирует кириллицу в латиницу и выводит его в новом файле. Но там непонятные символы, как можно поменять код чтобы он записывал в файл в формате UTF-8?


Код:

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.*;

        public class Main {
        public static void main(String[] args) throws  IOException { 
            
        //args.length
            
        System.out.println("argument = " + args[0]);
        System.out.println("argument = " + args[1]);  
        
        
        String inputFilePath = args[0];
        String outputFilePath = args[1];
        
        FileReader fileReader = new FileReader(inputFilePath);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        Writer writer = new OutputStreamWriter(new FileOutputStream(outputFilePath), StandardCharsets.UTF_8);
        
        String line;
        StringBuilder result = new StringBuilder();
        
        Map<String, String> dictionary = new Dictionary().getDictionary();
         
        
        while ((line = bufferedReader.readLine()) != null) {
            result.append(convertString(line, dictionary) + System.getProperty("line.separator")) ;
        }
        
        bufferedReader.close();
        fileReader.close();
        
        fileWriter.write(result.toString());
        fileWriter.flush();
        fileWriter.close();
        
        }
        

    public static String convertString(String str, Map<String, String> dictionary) {
        char[] chars = str.toCharArray();
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < chars.length; i++) {
            if (dictionary.containsKey(Character.toString(chars[i]))) {
                stringBuilder.append(dictionary.get(Character.toString(chars[i])));
                continue;
            }
            stringBuilder.append(chars[i]);
        }
        return stringBuilder.toString();
    }
}

class Dictionary {
    private Map<String, String> dictionary;

    public Dictionary() {
        dictionary = new HashMap<>();
        dictionary.put("а", "a");
        dictionary.put("А", "А");
        dictionary.put("ә", "&#225;");
        dictionary.put("Ә", "&#193;");
        dictionary.put("б", "b");
        dictionary.put("Б", "B");
        dictionary.put("д", "d");
        dictionary.put("Д", "D");
        dictionary.put("е", "e");
        dictionary.put("E", "E");
        dictionary.put("ф", "f");
        dictionary.put("Ф", "F");
        dictionary.put("г", "g");
        dictionary.put("Г", "G");
        dictionary.put("ғ", "ǵ");
        dictionary.put("Ғ", "Ǵ");        
        dictionary.put("х", "h");
        dictionary.put("Х", "H");
        dictionary.put("h", "һ");
        dictionary.put("Һ", "Һ");
        dictionary.put("і", "i");
        dictionary.put("І", "І");
        dictionary.put("и", "ı");
        dictionary.put("И", "I");
        dictionary.put("й", "i");
        dictionary.put("Й", "I");
        dictionary.put("ж", "j");
        dictionary.put("Ж", "J");
        dictionary.put("к", "k");
        dictionary.put("К", "К");
        dictionary.put("л", "l");
        dictionary.put("Л", "L");
        dictionary.put("м", "m");
        dictionary.put("М", "M");
        dictionary.put("н", "n");
        dictionary.put("Н", "N");
        dictionary.put("ң", "ń");
        dictionary.put("Ң", "Ń");
        dictionary.put("о", "o");
        dictionary.put("О", "О");
        dictionary.put("ө", "&#243;");
        dictionary.put("Ө", "&#211;");
        dictionary.put("п", "p");
        dictionary.put("П", "P");
        dictionary.put("қ", "q");
        dictionary.put("Қ", "Q");
        dictionary.put("р", "r");
        dictionary.put("Р", "R");
        dictionary.put("с", "s");
        dictionary.put("С", "S");
        dictionary.put("ш", "sh");
        dictionary.put("Ш", "Sh");
        dictionary.put("ч", "ch");
        dictionary.put("Ч", "Сh");
        dictionary.put("т", "t");
        dictionary.put("Т", "T");
        dictionary.put("ү", "&#250;");
        dictionary.put("Ү", "&#218;");
        dictionary.put("ұ", "u");
        dictionary.put("Ұ", "U");
        dictionary.put("в", "v");
        dictionary.put("В", "V");
        dictionary.put("ы", "y");
        dictionary.put("Ы", "Y");
        dictionary.put("у", "&#253;");
        dictionary.put("У", "&#221;");
        dictionary.put("з", "z");
        dictionary.put("З", "Z");
    }

    public Map<String, String> getDictionary() {
        return dictionary;
    }
}



И вот такая ошибка

Код:

Exception in thread "main" java.io.FileNotFoundException: C:\перевод\strings2a_kz.xml (Системе не удается найти указанный путь)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at java.io.FileInputStream.<init>(FileInputStream.java:93)
	at java.io.FileReader.<init>(FileReader.java:58)
	at Main.main(Main.java:17)
C:\Users\Adil\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
СБОРКА ЗАВЕРШЕНА СО СБОЕМ (общее время: 0 секунд)

Nastya2018 вне форума   Ответить с цитированием
Старый 24.12.2018, 09:57   #2
JavaDoc
Пользователь
 
Регистрация: 15.12.2018
Сообщений: 14
Репутация: 10
По умолчанию

Код:

 FileReader fileReader = new FileReader(inputFilePath);

здесь ты передаёшь путь к файлу
в данном случае система ругается что не может найти путь к файлу
JavaDoc вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реально ли перевести UTF-16 в UTF-8, если да то как? FleXik Общие вопросы Delphi 7 28.09.2014 12:11
Проблема с utf-8 кодировкой Ale}{ander SQL, базы данных 1 16.09.2014 18:59
Win64, Windows Server 2008, Excel 2010-64 - проблема конвертации в UTF-8 Hugo121 Microsoft Office Excel 28 12.02.2013 16:48
Проблема с utf-8 в cmd Whiskas Windows 3 02.01.2013 13:17
Преобразовние Utf-16 <=> Utf-8 hard-t Общие вопросы C/C++ 1 26.08.2011 13:54


17:58.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru