SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
-
ioann1
- Сообщения: 10
- Зарегистрирован: 02 апр 2013, 16:29
Сообщение
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, но как ее решить я не знаю. Какую кодировку использовать или делать нечто другое?
-
ioann1
- Сообщения: 10
- Зарегистрирован: 02 апр 2013, 16:29
Сообщение
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
Сообщение
ioann1 » 04 апр 2013, 16:26
Разобрался.
Проблема была в том, что Блокнот сохраняет текст в неподходящем формате. После того как с помощью Word сохранил текст в utf-8 все заработало.
-
=bor=
- Сообщения: 267
- Зарегистрирован: 21 мар 2013, 12:26
Сообщение
=bor= » 04 апр 2013, 18:56
ioann1 писал(а):Проблема была в том, что Блокнот сохраняет текст в неподходящем формате.
Надо же, и здесь MS лажает.)
Я вот столкнулся с некорректной работой Excel при сохранении кириллицы в файл .csv и последущей загрузкой в Office365.
Пришлось выгружать .xls в OpenOffice, там конвертить в .csv, а потом уже загружать в Office365.
Примечательно, что разработчик Блокнот, Excel и Office365 - MS.