개발자

자바 SMS 일본어 포멧팅문제 질문드립니다.

2024년 09월 24일조회 16

일본어로 SMS발송을 테스트중입니다. 발송할 내용 템플릿을 작성해놓고, SMS를 발송하고 있습니다. 근데 로그상으로는 문자가 깨지지않는데 발송된 문자를 폰에서 확인하면 중간중간 한자가 ?로 나오는 문자들이 있습니다. 코드는 대략 아래와 같고 message를 그대로 전송합니다. 검색도 해보고 다양하게 테스트 해봤습니다. message = new String(message.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8); 와 같은 식으로도 이것저것 테스트해봤는데 안되네요. 혹시 해결방법이 있을까요?

1String message = SMSTemplate.SAFETY_ZONE_DANGER_SMS_TEMPLATE_JAPAN
2.formatted(notification.getDangerType()
3.getDescription(),  
4notification.getAddress(), notification.getName())
이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 0

답변이 없을 때 보이는 아이콘

첫 답변을 기다리고 있어요.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 09월 24일

문제점을 확인하니 일본어 문자열을 SMS로 전송할 때 인코딩 문제가 발생하는 것으로 보이네요. 이 문제는 일바나 한자 등의 특수 문자를 처리하는 데 있어 일부 문자가 정확히 인코딩되지 않아서 발생하는 것일 가능성이 큽니다. 말씀해주신 코드를 살펴보면, 문자열은 UTF-8로 인코딩되고 있습니다만, 여기서 주의해야 할 점은 SMS 게이트웨이 역시 동일한 방식으로 문자열을 해독하고 처리할 수 있는지입니다. 결국 해결법은 사용하시는 SMS 게이트웨이 또는 서비스 공급자가 어떤 문자 인코딩을 지원하는지 확인하는 것입니다. 이는 API 문서나 서비스 공급자의 기술 지원팀으로부터 얻을 수 있습니다. 또한 message.getBytes(StandardCharsets.UTF_8)와 같은 방식으로 인코딩 변경 없이 바로 바이트 배열로 변환하여 그대로 서버에 전달해 보세요. Java에서 문자열을 .getBytes()를 이용해서 얻은 바이트 배열은 이미 UTF-8 형태라 외부적인 재인코딩작업 없이 그대로 전송하는게 좋습니다. 만약 이런 시도들 후에도 문제가 풀리지 않는다면, SMS 공급자나 API와의 호환성 문제일 수 있으므로, 공급자에게 문의하시는 것이 좋습니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!