반응형

API로 서버에서 읽어오는 한글 텍스트가 자꾸 깨지는 거임..

Spring boot yml 파일에도 설정해보고 Tomcat 설정도 해봤는데 JVM 인코딩 설정하니 됐음..


tomcat 인코딩 설정

server.xml 설정

<Connector port="8080" URIEncoding="UTF-8" ... />

 

  • 적용 대상: 요청(Request)의 URL(쿼리 파라미터 등)
  • 예: /search?query=한글에서 query=한글 → 이 값을 Tomcat이 UTF-8로 해석함.
  • 주의: POST body의 form data나 JSON에는 적용되지 않음.

 

 

web.xml 설정

<filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
  <init-param>
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value>
  </init-param>
</filter>

 

  • 적용 대상:
    • 요청 body 파라미터 인코딩 (POST, PUT form)
    • 응답 헤더의 Content-Type charset 설정
  • Spring Boot에서는 application.yml에서 아래로 대체 가능
spring:
  http:
    encoding:
      charset: UTF-8
      enabled: true
      force: true

 


JVM 인코딩 설정

JVM 내부에서 기본 문자 인코딩으로 사용됨

톰캣경로/bin/setenv.sh 파일에 설정하였음

export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

setenv.sh : Tomcat 실행 시 JVM 옵션이나 환경변수를 설정하는 스크립트

 

  • Java 표준 입출력(I/O) 기본 인코딩
    • 예를 들어 new InputStreamReader(someStream) 처럼 인코딩을 명시하지 않을 때 기본 인코딩으로 사용
    • 파일 입출력, 콘솔 출력, 로그 기록 등에서 기본 인코딩 기준이 됨
  • 애플리케이션이 명시적으로 인코딩을 지정하지 않은 경우의 문자열 처리
    • 예를 들어, new String(byteArray) 처럼 인코딩을 지정하지 않으면 JVM 기본 인코딩을 사용
  • 톰캣이나 스프링이 처리하기 전에 JVM 내부에서 문자 데이터를 다루는 기본 인코딩
    • 톰캣이나 스프링 필터 전에 JVM 레벨에서의 인코딩 기준 역할을 하므로, JVM 인코딩이 달라서 문제 발생하는 경우도 있음

 


서버 인코딩 확인

locale

 

 


요약

  • JVM 인코딩: 내부 기본 문자셋, 파일 I/O, 콘솔 출력 등에 영향
  • 톰캣 인코딩: URL 파라미터, 요청 처리 입출력 인코딩에 영향
  • 스프링 인코딩: HTTP 요청 바디, 응답 헤더에 인코딩 지정
  • 운영체제 로케일: JVM 기본 인코딩에 간접 영향
  • 클라이언트 인코딩: 요청 인코딩과 응답 처리에 직접 영향
반응형
반응형

며칠남았냐. ..
일하기싫다진짜

반응형
반응형

오늘은 면접을 두 군데나 봤어
취준은 2개월가량 걸린다더니
정말 알아보기 시작한지
2달정도 걸려서 면접을 보는구나
힘들다~

반응형
반응형

오늘은 면접준비
내일 오전반차
내일 오전면접보구
퇴근 후 또 면접~

반응형
반응형

오늘 홍대가서 잡템구경도하고
옷구경도 했다
무신사에서 엄청이쁜코트를 입어봤는데
코트 둘데가 없어서 안샀다
갖고싶다ㅠ


반응형
반응형

등촌 샤브샤브먹고
자라에서 블레이져 삼
생각보다 마니걸었다
힘틀당

반응형
반응형

1. Connection Timeout

발생 시점: 서버와 연결을 시도하는 과정에서 시간 초과 발생.

  1. 클라이언트가 서버에 연결 요청을 보냄 (CONNECT).
  2. 서버가 응답하지 않거나 네트워크 문제로 연결이 지연.
  3. Connection Timeout 설정 시간 초과 → ConnectTimeoutException 발생.

예시

 

  • 서버 주소가 잘못 설정되어 DNS 조회 실패.
  • 서버가 다운되어 요청을 처리하지 못함.
  • 방화벽이 연결을 차단.

 

 

 

2. Socket Timeout (응답 대기)

발생 시점: 연결이 성공한 후, 서버가 응답 데이터를 보내기 시작하지 않을 때 시간 초과 발생.

전체 응답 시간이 아닌 개별 패킷 응답 시간

  1. 클라이언트가 서버와 연결 성공.
  2. 서버는 요청을 받았으나 응답 처리가 지연됨.
  3. 클라이언트가 Socket Timeout 동안 대기했으나 데이터가 도착하지 않음 → SocketTimeoutException 발생.

예시

 

  • 서버 과부하로 응답 지연.
  • 요청 처리 중 서버의 작업이 중단됨.
  • 네트워크 패킷이 손실됨.

 

 

 

3. Read Timeout

발생 시점: 응답 데이터의 일부를 읽은 후, 남은 데이터를 끝까지 받지 못할 때 시간 초과 발생.

  1. 클라이언트가 서버와 연결 성공.
  2. 서버가 일부 응답 데이터를 보내기 시작.
  3. 응답 데이터의 나머지가 전송되지 않음.
  4. 클라이언트가 Read Timeout 동안 대기했으나 데이터 전송이 완료되지 않음 → SocketTimeoutException 발생.

예시

  • 대규모 데이터를 처리 중 네트워크 장애 발생.
  • 서버 응답이 중간에 중단됨.
  • 클라이언트가 데이터를 너무 빨리 읽으려 함.

 

 

SocketTimeout = ReadTimeout:

  • 두 용어는 Java에서 동일한 타임아웃 설정을 가리킵니다.
  • 둘 다 응답 데이터 읽기와 관련된 대기 시간을 제어합니다.
반응형
반응형

 

1. build.gradle에서는 bootJar만 활성화 되어있음 

 

2. 그래서 war 설정을 추가해주어야 함

war {
    enabled = true                // war 활성화
}
반응형

 

반응형
반응형

1. 오름차순 정렬

2. 배열 오른쪽부터 m개씩 끊으면 끊은 지점이 그 구간에서 제일 싼가격임..

import java.util.*;

class Solution {
    public int solution(int k, int m, int[] score) {
        Arrays.sort(score);
        int sum = 0;
        for (int i = score.length - m; i >= 0; i -= m) {
            sum += score[i] * m;
        }
        return sum;
    }
}
반응형

'코딩 관련 > 코딩문제풀기' 카테고리의 다른 글

[프로그래머스] Lv1. 소수 찾기  (0) 2024.11.16
[프로그래머스] Lv1. 덧칠하기  (0) 2024.11.15
[백준] 부분합  (0) 2024.11.14
[백준] 세 수 java  (0) 2024.11.14
[백준] 단지번호붙이기 java  (0) 2024.11.14
반응형

 

특정 수의 약수를 구할 때 그 수의 제곱근까지만 나눠보는 이유는 약수는 항상 짝을 이루기 때문

다른 풀이를 보고

for문 라벨링이란걸 처음 해보았다.

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        outer:
        for(int i=2; i<=n; i++){
            for(int j=2; j<=Math.sqrt(i); j++){
                if(i%j == 0){
                    continue outer;
                } 
            }
            answer += 1;
        }
        return answer;
    }
}
반응형

'코딩 관련 > 코딩문제풀기' 카테고리의 다른 글

[프로그래머스] Lv1. 과일 장수  (0) 2024.11.16
[프로그래머스] Lv1. 덧칠하기  (0) 2024.11.15
[백준] 부분합  (0) 2024.11.14
[백준] 세 수 java  (0) 2024.11.14
[백준] 단지번호붙이기 java  (0) 2024.11.14

+ Recent posts