如何下载包含斯洛文尼亚特殊字符的字符串文件
How to download String file which contain special characters of slovenia
我正在尝试下载包含斯洛文尼亚字符的 json
文件,在将 json
文件下载为字符串时,我得到了下面 json 数据中指定的特殊字符
"send_mail": "Po�lji elektronsko sporocilo.",
"str_comments_likes": "Komentarji, v�ecki in mejniki",
我正在使用的代码
URL url = new URL(f_url[0]);
URLConnection conection = url.openConnection();
conection.connect();
try {
InputStream input1 = new BufferedInputStream(url.openStream(), 300);
String myData = "";
BufferedReader r = new BufferedReader(new InputStreamReader(input1));
StringBuilder totalValue = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
totalValue.append(line).append('\n');
}
input1.close();
String value = totalValue.toString();
Log.v("To Check Problem from http paramers", value);
} catch (Exception e) {
Log.v("Exception Character Isssue", "" + e.getMessage());
}
我想知道如何正确下载字符。
在这一行创建 InputStreamReader 时:
BufferedReader r = new BufferedReader(new InputStreamReader(input1));
像这样将字符集发送到构造函数:
BufferedReader r = new BufferedReader(new InputStreamReader(input1), Charset.forName("UTF_8"));
while 循环中的解码行可以工作。如果 IOException
,您还应该在 try catch
块中添加您的连接
URL url = new URL(f_url[0]);
try {
URLConnection conection = url.openConnection();
conection.connect();
InputStream input1 = new BufferedInputStream(url.openStream(), 300);
String myData = "";
BufferedReader r = new BufferedReader(new InputStreamReader(input1));
StringBuilder totalValue = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
line = URLEncoder.encode(line, "UTF8");
totalValue.append(line).append('\n');
}
input1.close();
String value = totalValue.toString();
Log.v("To Check Problem from http paramers", value);
} catch (Exception e) {
Log.v("Exception Character Isssue", "" + e.getMessage());
}
不完全清楚您为什么不使用 Android 的 JSON 对象 class(以及相关的 classes)。不过,您可以试试这个:
String str = new String(value.getBytes("ISO-8859-1"), "UTF-8");
但你真的应该使用 JSON 库而不是自己解析
您需要将字符串字节编码为 UTF-8。请检查以下代码:
String slovenianJSON = new String(value.getBytes([Original Code]),"utf-8");
JSONObject newJSON = new JSONObject(reconstitutedJSONString);
String javaStringValue = newJSON.getString("content");
希望对您有所帮助!
字符集有问题
根据 UTF-8、UTF-16、ISO/IEC 8859-2 (Latin-2) 支持的维基百科斯洛文尼亚字母表。找到服务器使用的字符集,并使用相同的字符集进行编码。
如果它是像这样的 UTF-8 编码
BufferedReader bufferedReader= new BufferedReader(new InputStreamReader(inputStream), Charset.forName("UTF_8"));
如果您有不同的字符集,请使用它。
由于瑞典字符,我遇到了同样的问题。
所以我使用 BufferedReader 来解决这个问题。我已经使用 StandardCharsets.ISO_8859_1 转换了响应并使用该响应。请在下面找到我的答案。
BufferedReader r = new BufferedReader(new InputStreamReader(response.body().byteStream(), StandardCharsets.ISO_8859_1));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null)
{
total.append(line).append('\n');
}
并使用此 total.toString()
并将此回复分配给我的 class。
我已经使用 Retrofit 来调用网络服务。
我终于找到了适合我的方法
InputStream input1 = new BufferedInputStream(conection.getInputStream(), 300);
BufferedReader r = new BufferedReader(new InputStreamReader(input1, "Windows-1252"));
我通过这个 windows-1252
得出结论,将 json 文件放入 android 应用程序文件夹的资产文件夹中,它显示了与上面指定的相同的特殊字符,它显示了自动建议选项将编码更改为 UTF-8
、ISO-8859-1
、ASCII
和 Windows-1252
,所以我更改为 windows-1252
,它在 android 工作室工作我在我们的代码中复制了相同的代码,这很有效。
我正在尝试下载包含斯洛文尼亚字符的 json
文件,在将 json
文件下载为字符串时,我得到了下面 json 数据中指定的特殊字符
"send_mail": "Po�lji elektronsko sporocilo.",
"str_comments_likes": "Komentarji, v�ecki in mejniki",
我正在使用的代码
URL url = new URL(f_url[0]);
URLConnection conection = url.openConnection();
conection.connect();
try {
InputStream input1 = new BufferedInputStream(url.openStream(), 300);
String myData = "";
BufferedReader r = new BufferedReader(new InputStreamReader(input1));
StringBuilder totalValue = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
totalValue.append(line).append('\n');
}
input1.close();
String value = totalValue.toString();
Log.v("To Check Problem from http paramers", value);
} catch (Exception e) {
Log.v("Exception Character Isssue", "" + e.getMessage());
}
我想知道如何正确下载字符。
在这一行创建 InputStreamReader 时:
BufferedReader r = new BufferedReader(new InputStreamReader(input1));
像这样将字符集发送到构造函数:
BufferedReader r = new BufferedReader(new InputStreamReader(input1), Charset.forName("UTF_8"));
while 循环中的解码行可以工作。如果 IOException
try catch
块中添加您的连接
URL url = new URL(f_url[0]);
try {
URLConnection conection = url.openConnection();
conection.connect();
InputStream input1 = new BufferedInputStream(url.openStream(), 300);
String myData = "";
BufferedReader r = new BufferedReader(new InputStreamReader(input1));
StringBuilder totalValue = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
line = URLEncoder.encode(line, "UTF8");
totalValue.append(line).append('\n');
}
input1.close();
String value = totalValue.toString();
Log.v("To Check Problem from http paramers", value);
} catch (Exception e) {
Log.v("Exception Character Isssue", "" + e.getMessage());
}
不完全清楚您为什么不使用 Android 的 JSON 对象 class(以及相关的 classes)。不过,您可以试试这个:
String str = new String(value.getBytes("ISO-8859-1"), "UTF-8");
但你真的应该使用 JSON 库而不是自己解析
您需要将字符串字节编码为 UTF-8。请检查以下代码:
String slovenianJSON = new String(value.getBytes([Original Code]),"utf-8");
JSONObject newJSON = new JSONObject(reconstitutedJSONString);
String javaStringValue = newJSON.getString("content");
希望对您有所帮助!
字符集有问题
根据 UTF-8、UTF-16、ISO/IEC 8859-2 (Latin-2) 支持的维基百科斯洛文尼亚字母表。找到服务器使用的字符集,并使用相同的字符集进行编码。
如果它是像这样的 UTF-8 编码
BufferedReader bufferedReader= new BufferedReader(new InputStreamReader(inputStream), Charset.forName("UTF_8"));
如果您有不同的字符集,请使用它。
由于瑞典字符,我遇到了同样的问题。
所以我使用 BufferedReader 来解决这个问题。我已经使用 StandardCharsets.ISO_8859_1 转换了响应并使用该响应。请在下面找到我的答案。
BufferedReader r = new BufferedReader(new InputStreamReader(response.body().byteStream(), StandardCharsets.ISO_8859_1));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null)
{
total.append(line).append('\n');
}
并使用此 total.toString()
并将此回复分配给我的 class。
我已经使用 Retrofit 来调用网络服务。
我终于找到了适合我的方法
InputStream input1 = new BufferedInputStream(conection.getInputStream(), 300);
BufferedReader r = new BufferedReader(new InputStreamReader(input1, "Windows-1252"));
我通过这个 windows-1252
得出结论,将 json 文件放入 android 应用程序文件夹的资产文件夹中,它显示了与上面指定的相同的特殊字符,它显示了自动建议选项将编码更改为 UTF-8
、ISO-8859-1
、ASCII
和 Windows-1252
,所以我更改为 windows-1252
,它在 android 工作室工作我在我们的代码中复制了相同的代码,这很有效。