250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 희망적금연계
- 플러터 #안드로이드 #플레이콘솔 #앱내리기
- 도약연계
- 안드로이드 #코틀린 #코루틴 #콜백 #채널
- 희망적금전환
- 조립 후 재부팅
- Flutter #Stream
- 청년도약계좌환승
- 도약계좌전환
- Flutter #Stream #dart
- flutter #dart #stream
- 도약전환
Archives
- Today
- Total
Flutter 개발 상자
[Flutter] FileSystemException: Failed to decode data using encoding 'utf-8' 해결 본문
Flutter/오류해결
[Flutter] FileSystemException: Failed to decode data using encoding 'utf-8' 해결
망고상자 2024. 1. 4. 15:38728x90
에러 분석
위 에러는 UTF-8 인코딩 형식이 아닌 파일을 UTF-8 형식으로 읽고 쓰려고 했기 때문에 발생하는 에러이다. 위의 사진에서 알 수 있듯이 플러터는 txt 파일을 읽고쓸때 매개변수를 받지 않으면 기본적으로 UTF-8 형식을 사용한다. 따라서 다른 인코딩 형식의 파일을 읽고 싶다면 encoding 매개변수에 알맞는 인코딩 형식을 넣어주어야 한다.
파일 인코딩 형식 확인
MAC 기준 아래의 명령어를 터미널에서 실행
file -I 파일경로(확장자포함)
전 분명 UTF-8로 인코딩 했는데 왜 자꾸 인코딩이 잘못되는거죠?
UTF-8 인코딩 형식으로 파일을 쓸때 UTF-8 인코딩으로 처리할 수 없는 문자가 들어가게 되면 인코딩이 깨져버리게 된다.
��
웹사이트에서 위와 같은 문자를 본적이 있는가?
웹사이트에서는 보통 저런 UTF-8로 읽을 수 없는 문자일 경우 대체문자라는걸 통해서 보여주게 된다. 흔히 말하는 깨진 문자다.
문제는 플러터에서는 따로 설정을 해주지 않으면 처리할 수 없는 문자가 들어갔을때 대체 문자를 사용하지 않고 그대로 글의 제목과 같은 에러가 발생하게 된다.
따라서 혹시나 모를 에러에 대비하여 문자를 쓰고 읽을때는 다음과 같은 옵션을 추가해주자.
await file!.writeAsString(
'문자삽입',
// allowMalformed 옵션을 true로 주면 처리할 수 없는 문자를 대체문자로 표현해준다!
encoding: const Utf8Codec(allowMalformed: true),
);
요약
- 대체문자는 텍스트 파일의 현재 인코딩 형식으로 처리할 수 없는 문자열을 대체하여 보여주는것
- 플러터에서는 기본적으로 대체문자 옵션이 false로 되어있기 때문에 제목과 같은 에러가 발생할 수 있다.
728x90