반응형
수신 데이터를 저장하려고 보니 한글이 깨지는 경우가 많습니다. 콘솔에는 정상적으로 찍히는데 디비에 저장된 데이터가 깨지는거라면 DB 캐릭터셋 문제일 수 있지만 자바 콘솔에서부터 깨지면 인코딩 오류일 가능성이 높습니다.
1. FileReader에 Encoding 추가
2. 직접 String Encoding
1. FileReader에 Encoding 추가
우선 Reader에 인코딩 방식을 추가해주면 됩니다.
* FileReader의 경우는 기본 인코딩을 사용하기 떄문에, FileInputStream을 사용해야 합니다.
// OS 기본 인코딩
Reader reader = new FileReader(fileName);
// 인코딩 적용
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "UTF-8"));
2. 직접 String Encoding
Reader에 추가했음에도 변환되지 않은 경우 직접 Encoding합니다. 보통 Util.java에 toKorean, toAmerican 등의 함수가 이미 있을 수도 있습니다.
// 기본 형태
new String( korStr.getBytes("변경전"), "변경후") );
// 인코딩 변환
String charset[] = {"utf-8", "euc-kr", "ksc5601", "iso-8859-1", "8859_1", "ascii"};
for (String before : charset){
for (String after : charset){
if (!before.eqauls(after){
System.out.println(before + " -> " + after + " = " + new String("변경할 문자".getBytes(before), after));
}
}
}
위 방법으로 변환을 하다보면 안 깨지는 인코딩 방식이 나올 것 입니다.
로컬과 서버의 인코딩 방식이 다를 수 있으니, 실행되는 서버에서 직접 테스트 하시는 걸 추천드립니다.
그리드형
'IT > Java' 카테고리의 다른 글
[JAVA] 정규식을 활용한 패스워드 체크 함수(regex Pattern, Matcher) (2) | 2023.10.20 |
---|---|
[JAVA] Base64 사용 시 getDecoder() 빨간줄 표시 해결방법: The Method getDecoder() is undefined for the type Base64 (0) | 2022.10.24 |
[JAVA] 가변인자 (0) | 2022.04.07 |
Cause: java.lang.NumberFormatException : For input string: 해결방법 (0) | 2022.01.12 |
[JAVA] 다양한 형태의 JSON 파일 파싱하기 JSONParser, JSONObject, JSONArray (json.simple, GSON) (4) | 2021.11.30 |
댓글