我有一个JSON文件,其中包含一个井号。这个json是暂时从手机上存储的文件中提取的。它将来自服务器,但暂时我只是将它存储在手机上。我将JSON文件转换为输入流并使用方法将其转换为像这样的字符串
Resources res = getResources();
String sJsonVariables = iStream_to_String(res
.openRawResource(R.raw.widgvariables));
iStream_to_String方法就是这个
public String iStream_to_String(InputStream is) {
BufferedReader rd = new BufferedReader(new InputStreamReader(is), 4096);
String line;
StringBuilder sb = new StringBuilder();
try {
while ((line = rd.readLine()) != null) {
sb.append(line);
}
rd.close();
} catch (IOException e) {
e.printStackTrace();
}
String contentOfMyInputStream = sb.toString();
return contentOfMyInputStream;
}
我尝试使用Log.v打印出json来测试它打印出来没关系。除了英镑符号外,一切都打印得很好。我尝试了几种不同的编码方式
byte []b = sJsonVariables.getBytes();
String s1 = new String(b, "UTF-8");
String s2 = new String(b, "ASCII");
String s3 = new String(b, "Cp1252");
String s4 = new String(b, "ISO8859_1");
然而,它们都没有打印出英镑符号,它或者是黑色问号或其他奇怪的符号。有谁知道我做错了什么,以及如何让这个符号正确打印出来?
答案 0 :(得分:0)
同时使用try catch byte []b = sJsonVariables.getBytes("UTF8");
和String String s3 = new String(b, "Cp1252");