首页 > 编程语言 >Java 输出为乱码的解决方案之一

Java 输出为乱码的解决方案之一

时间:2022-10-07 08:11:28浏览次数:74  
标签:Java String getString 解决方案 object System 乱码 println out

最近在学习Java的过程中,写了一个查询天气的小程序,发现输出为乱码,尝试了几种方法,发现一个奇怪又简单的方法解决了这个问题,只需要编码一个字段即可,其它字段自动重新编码,理论上讲Windows使用GBK编码方式,但是我尝试GBK编码却失败了,Idea默认为UTF-8,再次尝试使用Standard UTF-8,居然成功了,奇葩就在这里,一时无法理解,分享给大家。

 

 修改编码方式后:

 

 

 


public static void query(String id) throws Exception {
try {
URL url = new URL("https://restapi.amap.com/v3/weather/weatherInfo?city=" + id + "&key=23879d193adefa8671ee71ea8124915c");
System.out.println("Author: 张莽 (Zhang Mang) @10.10.2022, Homepage: www.pavogroup.top");
System.out.println("I will get data from: " + url);
InputStream is = url.openConnection().getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
String line = br.readLine();
// System.out.println("Return Data: " + line);
JSONObject object = JSONObject.fromObject(line);
JSONArray array = object.getJSONArray("lives");
object = array.getJSONObject(0);
String city = object.getString("city");
String province = object.getString("province");

String weather = object.getString("weather");
String windpower = object.getString("windpower");
String humidity = object.getString("humidity");
String reporttime = object.getString("reporttime");
String winddirection = object.getString("winddirection");
String temperature = object.getString("temperature");
System.out.println("(今天的天气:)Today Weather: ==================================================== ");
byte[] b = province.getBytes(StandardCharsets.UTF_8);// 编码
String provinceG = new String(b, StandardCharsets.UTF_8);
System.out.println("Province: " + provinceG);
System.out.println("City: " + city);
System.out.println("Weather: " + weather);
System.out.println("WindPower: " + windpower);
System.out.println("Humidity: " + humidity);
System.out.println("WindDirection: " + winddirection);
System.out.println("Temperature: " + temperature);
System.out.println("ReportTime: " + reporttime);
System.out.println("==================================================== ");
} catch (Exception e) {
System.out.println("JSONException Error: " + e.getMessage());
// System.exit(1);

}
}

public static void queryCasts(String id) throws Exception {
for (int i = 0; i < 4; i++) {
try {
URL url = new URL("https://restapi.amap.com/v3/weather/weatherInfo?city=" + id + "&key=23879d193adefa8671ee71ea8124915c&extensions=all");
InputStream is = url.openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
String line = br.readLine();
// System.out.println("Return Data: " + line);
JSONObject object = JSONObject.fromObject(line);
JSONArray array = object.getJSONArray("forecasts");
object = array.getJSONObject(0);
JSONArray array1 = object.getJSONArray("casts");
object = array1.getJSONObject(i);
String date = object.getString("date");
String week = object.getString("week");
String dayweather = object.getString("dayweather");
String nightweather = object.getString("nightweather");
String daytemp = object.getString("daytemp");
String nighttemp = object.getString("nighttemp");
String daywind = object.getString("daywind");
String nightwind = object.getString("nightwind");
String daypower = object.getString("daypower");
String nightpower = object.getString("nightpower");
System.out.println("Forcast weather: *********************************************** ");

System.out.println("date: " + date);
System.out.println("week: " + week);
byte[] b = dayweather.getBytes(StandardCharsets.UTF_8);// 编码
String dayweatherG = new String(b, StandardCharsets.UTF_8); //解码
System.out.println("(天气:)daywather: " + dayweatherG);
System.out.println("nightweather: " + nightweather);
System.out.println("daytemp: " + daytemp);
System.out.println("nighttemp: " + nighttemp);
System.out.println("daywind: " + daywind);
System.out.println("nightwind: " + nightwind);
System.out.println("daypower: " + daypower);
System.out.println("nightpower: " + nightpower);
System.out.println(" ***************************************************************");

} catch (Exception e) {
System.out.println("JSONException Error: " + e.getMessage());
// System.exit(2);
}
}
}

 

标签:Java,String,getString,解决方案,object,System,乱码,println,out
From: https://www.cnblogs.com/managechina/p/16759037.html

相关文章

  • 我整理了50道经典Java算法题,直接进了字节跳动!!
    写在前面最近,很多小伙伴都想进入字节跳动这个快速发展的公司,而字节跳动对于算法的要求比较高。于是乎,有些小伙伴问我能否整理一些基础的算法题,帮助他们提升下基础算法能......
  • 2022.10.7Java方法详解
    Java方法详解System,out,println()是输出语句,也是方法Java方法是语句的集合,它们在一起执行一个功能方法是解决一类问题步骤的有序组合方法是包含类或对象中......
  • java类加载器 defineClass和loadClass的区别
    在阅读《自己动手写java虚拟机》时,通过观察P133~P135的代码classLoader会将加载过的class保存起来(包括defineclass的类),而只有在要加载一个类时 没有从已加载的类找到......
  • Java 面试题 10 - 海量数据处理算法
    大数据处理中的分治思想哈希映射:如果数据太大,不能全部放入内存中,就可以利用映射函数将每条数据映射到一个小文件中,例如%1000可以将大文件映射成1000个小文件。相同的......
  • Java 面试题 11 - 分布式系统常见问题
    分布式ID的实现分布式ID需要满足哪些需求?基本需求:全局唯一高性能:生成速度快,对本地资源消耗小。高可用:生成分布式ID的服务要保证高可用性。方便易用:使用方便......
  • Java 面试题 09 - 计算机网络
    TCP&UDPTCP和UDP的区别有什么?TCP面向连接,UDP无连接。TCP提供可靠的传输,在传递数据之前,需要通过三次握手建立连接,在传递数据时,有确认、窗口、重传、拥塞机......
  • Java 面试题 08 - 计算机网络
    进程什么是系统调用?根据进程访问资源的特点,可以把进程的运行状态分为两个级别:用户态:只能读取用户程序的数据;内核态:可以访问几乎一切资源。用户程序基本都运行在用户......
  • Java Collections:专为集合框架而生的工具类
    titleshortTitlecategorytagdescriptionheadJavaCollections:专为集合框架而生的工具类Collections工具类Java核心常用工具类Java程序员进......
  • Hutool - 开源的Java工具集
    官网 参考文档......
  • Java异常处理的20个最佳实践
    titleshortTitlecategorytagdescriptionheadJava异常处理的20个最佳实践Java异常处理的20个最佳实践Java核心异常处理Java程序员进阶之路,......