R에서 한글이 깨질 때
인코딩문제?
컴퓨터에서 문자는 (그리고 모든 것은) 2진수로 저장된다.
컴퓨터가 처음 개발될 때 알파벳과 특수 문자를 포함하는 28 = 256개의 문자를 모아 8자리 이진수로 표현했고,
이를 ASCII (American Standard Code for Information Interchange) 코드라고 한다.
- 컴퓨터를 영어 문화권에서만 사용하면 ASCII 코드로 충분하고 아무 문제가 없다.
알파벳이 아닌 문자 (한/중/일/등등등)는 각자 나라에서 정해진 방식으로 문자를 저장했다.
- 게다가 시대마다 인코딩이 조금씩 달라져 참 거시기하다.
- 한글의 예를 들면 춘추전국시대를 지나 euc-kr 이라는 방식이 정부 표준으로 자리잡았으나,
- Microsoft는 이를 개량한 cp949 라는 방식으로 Windows 95에 탑재하여 이후 cp949가 공인 표준보다 더 표준처럼 쓰이게 됨.
글로벌시대에 영어/한/중/일/태국/사우디/등등 여러 언어를 한 문서에 써야 할 경우가 종종 발생한다.
- 기존의 나라별 문자 인코딩 방식은 이게 참 어렵다.
- 지구상 모든 문자를 다 아우르는 universal code, 이름하야 unicode가 탄생한다.
- 1991년 Launching 이후 더 많은 언어를 포함하며 꾸준히 업데이트 되는 unicode를, 그러나 Microsoft는 꾸준히 외면하다 Windows 10에서야 적용한다.
R에서 한글이 깨지는 원인:
- cp949로 저장한 한글을 unicode 방식으로 읽으려 하거나, (Windows 8이나 그 이전 Windows를 이용해서 자료를 저장했다.)
- unicode 방식으로 저장한 한글을 cp949 방식으로 읽으려 하는 경우 (내 컴퓨터가 Windows 8이나 그 이전 Windows인데 자료는 Windows 10이나 macOS, Linux, Unix등에서 저장했다.)
해결방법 (다음 셋 중 하나를 한다):
- 파일을 읽을 때 인코딩을 지정해준다.
- read.spss() function을 부를 때 reencode=TRUE 옵션을 준다: read.spss("filename", reencode=TRUE)
- read.csv() function은 이렇게 쓴다: read.csv("filename.csv", fileEncoding = "euc-kr")
이 블로그를 참고하여 R의 인코딩 방법을 수정한다.
- 한글을 쓰지 않는다.
Windows의 계정 이름이 한글인 경우?
몇몇 영어권 windows software(예: RStudio)는 한글으로 된 파일 이름을 못 찾는다.
- 파일 이름은 영어여도, 계정 이름이 한글이면 파일 경로상 한글이 존재하게 되고, 파일을 못 찾는다.
해결방법 (다음 넷 중 하나를 한다):
이 블로그를 참고하여 계정 이름을 영어로 변환한다.
- 영어로 된 계정 이름을 하나 만들고 거기서만 RStudio를 쓴다.
- 데이타를 드라이브 최상위 폴더에 저장한다. (D:\english_folder_name\data_file)
- Apple Mac이나 Linux를 사용한다.
macOS 인데도 한글이 깨진다?
- R이 영어폰트를 사용하게 세팅된 경우임.
이 블로그를 참고하여 한글폰트를 사용하게 세팅한다.
| /CentralLimitTheorem /ChiSquared /Clustering /InstallR /InstallRStudio /Lies /NormalDistribution /RBasic /RBasic1 /RBasic2 /RBasic3 /RCloud /RIntro /RKorean /T-Test |
