[Flutter] http 요청 시 한글 깨짐 해결 방법

2023-11-16


사진: Unsplash 의 NEOM


1. 방법

 

  // 변수를 선언하여 서버로부터 받아온 데이터를 저장합니다.
  Map<String, dynamic> data = {};

  // 서버에서 데이터를 가져오는 함수
  Future<void> fetchData() async {
    var response = await http.get(Uri.parse('http://10.0.2.2:8080/test'));
    if (response.statusCode == 200) {
      // 성공적으로 데이터를 가져온 경우
      setState(() {
        //data = json.decode(response.body); <- 이렇게 하면 한글 깨짐
        data = jsonDecode(utf8.decode(response.bodyBytes));
      });
    } else {
      // 데이터를 가져오지 못한 경우에 대한 처리를 여기에 추가할 수 있습니다.
      log.i('Failed to load data');
    }
  }

 

해결 방법은 간단한다.  data = json.decode(response.body); 와 같은 형식으로 json 문자열을 디코딩 하는 것을 utf8 로 디코딩 하면 정상적으로 한글이 노출된다.

우측과 같이 변경하면 된다.  data = jsonDecode(utf8.decode(response.bodyBytes));


메인 이미지 출처 : 사진: UnsplashNEOM