[자바 JAVA] Server Socket 소켓 통신 한글 깨짐 해결 BufferedReader, InputStreamReader, PrintWriter, OutputStreamWriter.... JDK한글깨짐, 자바한글깨짐

2023. 2. 28. 01:04·정리 전 게시글/공부 관련

보통 자바 소켓 통신에서 한글이 깨져서 출력될 때는 코드에 인코딩이 제대로 안되어 있으면 한글이 깨질 가능성이 높다고 한다. 그래서 서버와 클라이언트 모두 UTF-8 인코딩 설정을 해줘야하지만...

 

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();

// 클라이언트와 연결된 Socket 객체에서 OutputStream을 얻어옴
OutputStream out = clientSocket.getOutputStream();
// PrintWriter 객체를 사용하여 클라이언트로 메시지를 전송함
PrintWriter writer = new PrintWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));

writer.println(input);
writer.flush();

 

나같은 경우에는 자바 코드에서 이런식으로 서버에서든 클라이언트로든 메시지로 String 문자열을 전송했다

물론 처음에는 UTF-8 설정을 안해줘서 아 맞다 인코딩 설정 해줘야 하는데 하고 설정해줬지만

어림도 없지 한글 깨져버리기

 

 

결과는 영어, 숫자는 잘 보내지는데 한글로 보내면 한글이 깨진다는 것

보내는 쪽이든 받는 쪽이든 둘 다 깨진다

 

인터넷에는

 

PrintWriter writer = new PrintWriter(new OutputStreamWriter(out, "UTF8"));

 

이런식으로 UTF8, StandardCharsets.UTF_8 이런걸 쓰면 된다고 하지만 전혀 해결되지 않았다

 

그래서 나는 내 코드에 문제가 있다고 생각하지 않아서

IDE쪽에 의심을 해봤다

 

 

내가 사용하는 IDE는 인텔리제이라서 인텔리제이 한글 깨짐 문제를 검색했는데

설정의 파일 인코딩을 UTF-8로 변경해라는 글을 보고 따라했다

 

결과는 변동 없음

 

그러다가 구세주 같은 글을 보게되었는데

 

 

JDK 18 버전에 한글 깨짐 오류가 있다는 것

실제로 내가 사용하던 JDK 버전은 18 이었다...

이런 ㅅㅍ

 

 

바로 17로 변경해주자

변경 방법은

 

 

먼저 상단의 토글 버튼을 누르면 나오는 구성 편집을 들어가서

 

 

빌드 버전을 확인해보자

17 이하로만 하면 되니까 변경을 하고 실행을 하면 아마 코드를 읽을 수 없다고 나올 것이다

잘되면 상관없고 안되면 아래 방법을 그대로 하면될거

 

 

왼쪽 상단의 파일 버튼을 눌러서 프로젝트 구조로 들어가자

 

 

그러면 또 SDK 버전을 바꿀 수 있는데 이것도 바꿔주면 된다

그리고 대망의 실행.....

 

 

너무나 잘된다 ㅠㅠㅠㅠ

 

결국 문제는 IDE의 자바 버전 문제 였던것

 

어떤 사람은 바이트 배열로 전송을 하던데 그렇게 하기 싫어서 여러가지 찾다보니 이렇게 찾을 수 있었다....

원래 챗GPT에게 물어보려고 했는데 사람이 너무나 많이 접속하는지 지금 서버 터짐..

그래서 꽤 오래걸렸다 ㅠ....

 

 

 

저작자표시 (새창열림)

'정리 전 게시글 > 공부 관련' 카테고리의 다른 글

자바 TCP/IP 소켓 통신 서버, 클라이언트 만들기 코드  (0) 2023.03.01
[백준 1027번 문제, JAVA] 고층 건물  (0) 2023.02.28
[백준 1003번 문제, JAVA] 피보나치 함수  (0) 2023.02.27
[백준 1038번 문제, JAVA] 제곱 ㄴㄴ 수  (0) 2023.02.26
[백준 1085번 문제, JAVA] 직사각형에서 탈출  (0) 2023.02.26
'정리 전 게시글/공부 관련' 카테고리의 다른 글
  • 자바 TCP/IP 소켓 통신 서버, 클라이언트 만들기 코드
  • [백준 1027번 문제, JAVA] 고층 건물
  • [백준 1003번 문제, JAVA] 피보나치 함수
  • [백준 1038번 문제, JAVA] 제곱 ㄴㄴ 수
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (279)
      • 논문 (0)
      • Roboracer (2)
      • 개발 아무거나 (1)
      • 일상 아무거나 (2)
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스크롤바CSS
    마크
    반복하지않는수
    티스토리스킨편집
    이것이자바다
    프로그래머스
    공개SW개발자대회
    프로그래머스PCCE
    안드로이드
    캡스톤디자인
    c언어초보
    일본규슈공업대학교
    티스토리HTML
    자바
    파이썬
    컨텍스트스위칭
    이것이자바다확인문제
    이것이자바다연습문제
    마인크래프트
    C언어
    C++강좌
    콜라츠추측
    마크스크립트
    C언어강좌
    티스토리반응형2스킨편집
    파이어베이스
    빅데이터공모전
    마인크래프트스크립트
    마인크래프트강화스크립트
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[자바 JAVA] Server Socket 소켓 통신 한글 깨짐 해결 BufferedReader, InputStreamReader, PrintWriter, OutputStreamWriter.... JDK한글깨짐, 자바한글깨짐
상단으로

티스토리툴바