2013-05-11 116 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

我相信我最终得到了这个问题。 首先我尝试了你的解决方案。它适用于元音,但与辅音无关。 然后它让我感到震惊:原始编码!我已经为windows的记事本保存了sqlite的脚本。我试图解决这个问题约5个小时。记事本默认使用ANSI编码,我没有注意到搞砸了一切。一旦我将其更改为UTF-8,它就像一个魅力!有趣的是,大约两年前我有类似的问题,而且当时也花了几个小时。那么,我希望有一天我会学到它:) – skandigraun 2013-05-11 20:26:23

+0

当然,谢谢你的回答。 – skandigraun 2013-05-11 20:26:48

+0

很高兴能帮到你! – 2013-05-12 11:21:12

1

现在是大多数这些文本中包含一些特殊 字符(如L - u013D)我的问题是不正确显示。

尝试在将字符串放入数据库之前对其进行编码,然后在应用程序中使用它之前对其进行解码。