OS별 인코딩

image

  • Mac과 리눅스 : UTF-8
  • Windows : CP949 or Euc-kr


인코딩 문제 해결방법

  • 깨진 글자가 확인 될 경우, File > Reopen with encoding을 통해 아래와 같이 설정한다
    * R환경을 되도록 UTF-8로 고정시켜놓자.
    * windows의 경우, CP949가 default로 설정하기 때문에, 깨지는 것인 MaxOS와 linux에서 온 UTP-8 인코딩이 온 것이 문제임.

    image


문제가 발생한 이유

image

  • Max OS나 Linux에서는 UTF-8로 한글, 중국어, 일본어 등이 인코딩 되어있는 상태에서, 자료가 Windows로 건너오기 때문에 글자가 깨진다.
  • 이러한 것을 해결하기 위해서는 UTP-8로 인코딩을 풀어준 뒤 해결하자.
  • 코딩으로 해결하려면 아래와 같이, 파일을 읽어 들일 때, encoding = "UTF-8" 인자를 넣어주면 된다.

image



실습

setwd('c:/users/is2js/R_da/')

#### 데이터 준비 ####
df = data.frame(aa = 1:3,
                 bb = LETTERS[1:3],
                 cc = c("가나abc", "다라123", "!@마#$바"))
df


#### 인코딩별 저장하기 ####
write.csv(df, "encoding_test_default.csv", row.names = F)
# 윈도우
write.csv(df, "encoding_test_euc_kr.csv",  row.names = F,
           fileEncoding = "euc-kr")
write.csv(df, "encoding_test_cp949.csv",   row.names = F,
           fileEncoding = "cp949")
image
# 맥, 리눅스
# ***윈도우에서 utf8로 저장하게 되면, excel에서 여는 순간 깨진다.
write.csv(df, "encoding_test_utf8.csv",    row.names = F,
           fileEncoding = "utf8")
image


#### UTF-8로 인코딩된 파일을  window에서 읽어오기 ####
# utf8로 저장된 csv를 windows에서 read.csv로 읽으면,, 데이터가 없다고 뜬다.
read.csv("encoding_test_utf8.csv")
image


# 데이터가 존재함을 알기 때문에, readlins로 한줄씩 읽어보자
# 한줄씩은 읽어지나, 깨져서 나온다.
readLines("encoding_test_utf8.csv")
image

# 한줄씩 읽을 때, utf-8 인코딩으로서 읽어보자
# *** 저장시에는 fileEncoding = "uff8" / 읽을 시 encoding="UTF-8"
# 그러나 텍스트가... 구분자 등등이 엉망으로 나온다.
readLines("encoding_test_utf8.csv", encoding = "UTF-8")
image


#### data.table 패키지 - fread()를 이용한 utf8잘 읽어오기 ####
# 1. 설치
install.packages("data.table")
# 2. 사용하기 - data.table + encoding parameter
library("data.table")
fread("encoding_test_utf8.csv", encoding = "UTF-8")
image

# 3. data.table + encoding함수 로 깨진 칼럼 복구시키기
dd = fread("encoding_test_utf8.csv")
dd
Encoding(dd$cc) = "UTF-8"
dd

image


# utf-8 과 cp949/ euc-kr 이 섞여있는 경우 --> 포기하자...

+ Recent posts