2013-05-11 2 views
1

В данный момент я создаю небольшое приложение для Android, как хобби. Это не что-то серьезное: он делает запрос из базы данных sqlite и отображает результаты в элементе listview. Если вы нажмете на элемент в списке, он сделает другой запрос с содержимым элемента и отобразит новые результаты. (например, вы нажимаете на город, в нем отображаются рестораны в городе. Если вы нажмете на город, он отобразит доступные продукты)Android: отображение специальных символов в ListView

Теперь моя проблема в том, что большинство этих текстов содержат некоторые специальные символы (например, Ľ - u013D), которые отображаются неправильно. И поскольку они отображаются неправильно, я также не могу делать с ними дополнительные запросы. Я пробовал много способов, в основном, то, что я видел на этом форуме, однако я слишком нуб для этого, к сожалению. Это то, что у меня есть:

//DataBaseHandler is just a custom class creating and executing SQL queries, nothing special. It extends to SQLiteOpenHelper 
DataBaseHandler db=new DataBaseHandler(this); 

//getStations returns a List<String> object with the required items, contains raw strings   
ArrayList<String> StationList=(ArrayList<String>) db.getStations(i.getStringExtra("jaratszam")); 

db.close(); 

lv=(ListView) findViewById(R.id.listStation); 

ArrayAdapter<String> aa=new ArrayAdapter<String>(this, R.layout.tv, StationList);   

lv.setAdapter(aa); 

Я попытался изменить строки, которые я получил обратно с Html.fromHtml, также CharSequence [], но никто не помог (я предполагаю, что я не правильно их использовать). Я изменил мою базу данных и, я изменил специальные символы в HTML-кодов, как

&#00E1; 

Не могли бы вы просветить меня, что я должен делать именно?

Заранее спасибо.

ответ

2

Возможно, вам понадобится правильный набор символов для вашей строки, хотя UTF-8 (по умолчанию) должен поддерживать большинство иностранных и специальных символов. Вот как создать новую строку с пользовательской кодировкой из старой строки:

String newString = new String(oldString.getBytes(), Charset.YOUR_CHARSET_HERE); 
+0

Я верю, что у меня проблема наконец. Сначала я попробовал ваше решение. Он отлично работал с гласными, но не с согласными. А потом это поразило меня: оригинальная кодировка! Я создал сценарий для sqlite, который я сохранил с помощью блокнота Windows. Я пытался решить это примерно 5 часов. Блокнот использовал кодировку ANSI по умолчанию, что я не заметил, что все это испортило. Как только я изменил его на UTF-8, он работал как шарм! Самое смешное, что у меня была аналогичная проблема около 2 лет назад, и потребовалось также несколько часов назад. Ну, я надеюсь, что однажды узнаю это :) – skandigraun

+0

И, конечно, спасибо за ответ. – skandigraun

+0

Рад, что я могу помочь! –

1

Теперь моя проблема в том, что большинство из этих текстов содержат специальные символы (например, L - u013D), которые не отображаются правильно ,

Попробуйте кодировать строку перед тем, как поместить ее в базу данных и декодировать ее перед ее использованием в своем приложении.

Смежные вопросы