Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android UTF-8 vs ANSI等于不工作/如何更改字符集?_Java_Android_String_Utf 8 - Fatal编程技术网

Java Android UTF-8 vs ANSI等于不工作/如何更改字符集?

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,并

我从csv或txt文件中读取android应用程序的列表

如果文件是用Notepad++i编码的UTF-8,那么列表就可以了。但是我不能用.equals搜索/查找字符串

如果文件用widows编码为ansi,则不能看到äöü等,但现在我可以找到字符串

现在我的问题。我怎样才能知道字符串的字符集是什么

我将我的第一个字符串(来自文件)与另一个字符串进行比较,该字符串在应用程序的searchview中读取

我“认为”我的应用程序中的searchview字符串也是ansi,如何将其更改为UTF-8,并希望比较再次起作用

安卓4.4.2

多谢各位

以下工作:

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
,或者更糟糕的是,您根本不会得到任何错误,格式错误/非法的字节将被转换为Unicode
U+FFFD
替换字符。如果在转换过程中需要对错误处理进行更多控制,则需要改用类

有时UTF编码的文件前面会有一个BOM表,所以您可以检查它。但是Ansi文件不使用BOM表。如果文件中不存在UTF BOM,则必须分析原始数据并进行猜测(如果猜测错误,将导致问题),或者简单地询问用户要使用哪个字符集


始终了解数据的字符集。如果你不知道,问吧。避免猜测。

非常感谢这是我现在的读物:laktoseListName.add(新字符串(tempArray[0].getBytes(),“UTF-8”);
tempArray
声明为什么?如果它是一个字符串数组,则不需要进行任何转换:
laktoseListName.add(tempArray[0])