- Posted
- Filed under 01010101
코드 보기
보통 Stream에서 String을 만들경우 이런 방법을 사용합니다.
Java API를 보면 다음과 같은 말이 나옵니다.
Constructs a new String by decoding the specified array of bytes using the platform's default charset.간단하게 말하면, 시스템의 기본 charset을 사용해서 byte[]을 디코딩해서 String을 만든다는겁니다.
그런데, 이렇게 코딩을 하게되면 기본 charset이 다른 플랫폼 사이에서의 호환성을 잃어버리게 됩니다.
예를들면,
- .NET에서 파일을 System.Default로 인코딩해서 저장합니다.
- 윈도우에서 Java로 개발하면서 위와 같이 코딩을 합니다.
- 윈도우에서 테스트할 경우에는 문제가 발생하지 않습니다. (왜냐하면, charset이 같기 때문입니다.)
- 이 프로그램을 UTF-8로 설정된 리눅스에서 돌리면, 디코딩을 제대로 하지 못하는 문제가 발생합니다.
.NET 프로그램 -----> DB, File, Network -----> Java 프로그램(MS-Windows, Linux등에서 동작)
이런 문제를 해결하기 위해 다음과 같이 저장시 사용한 charset을 명시적으로 사용해야 합니다.
코드 보기