gpt4 book ai didi

Java 编码字符串无法正确转换

转载 作者:行者123 更新时间:2023-12-01 18:04:37 24 4
gpt4 key购买 nike

我有几个字符串无法正确转换。我遇到的问题是我的所有字符串上都有奇怪的字符(它们是西类牙语,带有顶部重音),我可以使用以下代码转换它们:

连接到数据库:连接后,我继续从数据库获取信息,如下所示(它带有json格式)数据库信息显示为Per:

if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream in = new BufferedInputStream(urlConnection.getInputStream());

BufferedReader reader = new BufferedReader(new InputStreamReader(in));
//BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
result = sb.toString();
//is.close();
Log.i("Tag:", result);
}

检索 JSON 列表:

try{
jArray = new JSONArray(welcome.result);
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
Log.i("log_tag", "title:" + json_data.getString("title"));

try {
country = new String(json_data.getString("country").getBytes("ISO-8859-1"), "UTF-8");
}
catch (UnsupportedEncodingException e){

}

但是,我捕获了另一个西类牙语字符串,它恢复了,但其他字符串仍然正确显示。当前字符串看起来像这样 PER�?º有任何想法吗?我猜正在使用不同的编码。我从中提取它们的数据库使用 utf8_general_ci。预先感谢您!

最佳答案

只需这样做:

country = json_data.getString("country");

getString 已返回一个 String,因此无需将其编码为 ISO-8859-1 来将其解码为 UTF- 8 由于明显的原因而无法工作。

如果即使使用上面的代码,您也得到不正确的字符,这意味着您的问题之前就出现了,可能是在解析您的 JSON 内容时,它可能没有使用正确的字符编码进行解析。

您需要显式地将字符编码设置为UTF-8,否则它将使用默认编码:

BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));

关于Java 编码字符串无法正确转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37632633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com