Java Android UTF-8 vs ANSI等于不工作/如何更改字符集?
我从csv或txt文件中读取android应用程序的列表 如果文件是用Notepad++i编码的UTF-8,那么列表就可以了。但是我不能用.equals搜索/查找字符串 如果文件用widows编码为ansi,则不能看到äöü等,但现在我可以找到字符串 现在我的问题。我怎样才能知道字符串的字符集是什么 我将我的第一个字符串(来自文件)与另一个字符串进行比较,该字符串在应用程序的searchview中读取 我“认为”我的应用程序中的searchview字符串也是ansi,如何将其更改为UTF-8,并希望比较再次起作用 安卓4.4.2 多谢各位 以下工作:Java Android UTF-8 vs ANSI等于不工作/如何更改字符集?,java,android,string,utf-8,Java,Android,String,Utf 8,我从csv或txt文件中读取android应用程序的列表 如果文件是用Notepad++i编码的UTF-8,那么列表就可以了。但是我不能用.equals搜索/查找字符串 如果文件用widows编码为ansi,则不能看到äöü等,但现在我可以找到字符串 现在我的问题。我怎样才能知道字符串的字符集是什么 我将我的第一个字符串(来自文件)与另一个字符串进行比较,该字符串在应用程序的searchview中读取 我“认为”我的应用程序中的searchview字符串也是ansi,如何将其更改为UTF-8,并
String s = null;
try
{
s = new String(query.getBytes(), "UTF-8");
}
catch (UnsupportedEncodingException e)
{
Log.e("utf8", "conversion", e);
}
Java字符串始终编码为UTF-16,而不管字符串数据来自何处 在将源数据转换为Java字符串时,正确标识源数据的字符集非常重要<代码>新字符串(query.getBytes(),“UTF-8”)如果
byte[]
数组实际上是UTF-8编码的,则可以正常工作。如果指定了错误的字符集,则只有在指定Java不支持的字符集时才会出现UnsupportedEncodingException
错误。但是,如果指定Java支持的字符集,然后数据解码失败(通常是因为为数据指定了错误的字符集),则会出现其他错误,例如MalformedInputException
或UnmappableCharacterException
,或者更糟糕的是,您根本不会得到任何错误,格式错误/非法的字节将被转换为UnicodeU+FFFD
替换字符。如果在转换过程中需要对错误处理进行更多控制,则需要改用类
有时UTF编码的文件前面会有一个BOM表,所以您可以检查它。但是Ansi文件不使用BOM表。如果文件中不存在UTF BOM,则必须分析原始数据并进行猜测(如果猜测错误,将导致问题),或者简单地询问用户要使用哪个字符集
始终了解数据的字符集。如果你不知道,问吧。避免猜测。非常感谢这是我现在的读物:laktoseListName.add(新字符串(tempArray[0].getBytes(),“UTF-8”);
tempArray
声明为什么?如果它是一个字符串数组,则不需要进行任何转换:laktoseListName.add(tempArray[0])代码>