Проблема с чтением русского текста из txt файла

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
ioann1
Сообщения: 10
Зарегистрирован: 02 апр 2013, 16:29

Проблема с чтением русского текста из txt файла

Сообщение ioann1 » 04 апр 2013, 13:19

Добрый день.
Столкнулся с проблемой при чтении русского текста сохраненного в txt файл.
Извлеченный текст помещаю в WebView

Код: Выделить всё

String summary = "<!Doctype html><html><head><meta charset=utf-8></head><body>" + text + "</body></html>";
wv.loadData(summary, "text/html", "utf-8");
, но вместо русского текста вылазит белиберда из странных символов.
Наверное проблема в использовании utf-8, но как ее решить я не знаю. Какую кодировку использовать или делать нечто другое?

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Проблема с чтением русского текста из txt файла

Сообщение KamiSempai » 04 апр 2013, 15:00

R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

ioann1
Сообщения: 10
Зарегистрирован: 02 апр 2013, 16:29

Re: Проблема с чтением русского текста из txt файла

Сообщение ioann1 » 04 апр 2013, 15:33

Выяснились новые моменты в проблеме: проблема возникает именно во время чтения текста из файла, при этом не важно какой текст - русский или английский. Если же выводить напрямую текст, без считывания его из файла(вводить этот текст в коде), то все работает.

Код: Выделить всё

public class ViewActivity extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.view);
		
		WebView wv = (WebView)findViewById(R.id.wv);
		
		Bundle bundle = getIntent().getExtras();

		//Формируем название файла
		String itemName = "n" + bundle.getString("id");
		
		Context context = getBaseContext();
		
		WebSettings settings = wv.getSettings();
		settings.setDefaultTextEncodingName("utf-8");
		
		String text = readRawTextFile(context, getResources().getIdentifier(itemName, "raw", "ru.myproject.crib"));

		Log.d("myLogs", text);

		String summary = "<html><body>"+ text +"</body></html>";
		
		wv.loadDataWithBaseURL(null, summary,"text/html", "utf-8", null);
	}
	
	public static String readRawTextFile(Context ctx, int resId){
		
		InputStream inputStream = ctx.getResources().openRawResource(resId);
		
		InputStreamReader inputReader = new InputStreamReader(inputStream);
		
		BufferedReader buffReader = new BufferedReader(inputReader);
		
		String line = "";
		
		StringBuilder text = new StringBuilder();
		
		try{
			while((line = buffReader.readLine())!=null){
				text.append(line);
				text.append('\n');
				Log.d("myLogs", "Читаем из файла");
			}
		}catch (IOException e) {
			Log.d("myLogs", "IOException");
		}
		return text.toString();
	}

}
Вот полный код, вроде нигде не ошибался, но не работает.

ioann1
Сообщения: 10
Зарегистрирован: 02 апр 2013, 16:29

Re: Проблема с чтением русского текста из txt файла

Сообщение ioann1 » 04 апр 2013, 16:26

Разобрался.
Проблема была в том, что Блокнот сохраняет текст в неподходящем формате. После того как с помощью Word сохранил текст в utf-8 все заработало.

=bor=
Сообщения: 267
Зарегистрирован: 21 мар 2013, 12:26

Re: Проблема с чтением русского текста из txt файла

Сообщение =bor= » 04 апр 2013, 18:56

ioann1 писал(а):Проблема была в том, что Блокнот сохраняет текст в неподходящем формате.
Надо же, и здесь MS лажает.)
Я вот столкнулся с некорректной работой Excel при сохранении кириллицы в файл .csv и последущей загрузкой в Office365.
Пришлось выгружать .xls в OpenOffice, там конвертить в .csv, а потом уже загружать в Office365.
Примечательно, что разработчик Блокнот, Excel и Office365 - MS. :D

Ответить