2012-06-27 2 views

답변

1

당신이 인수 fileEncoding를 사용하여 시도 가지고 문자열을 표시하기 위해 작성된 텍스트 파일을 하시겠습니까?

write.table(str, file="chartest", quote=F, col.names=F, row.names=F, fileEncoding="UTF-8") 
+1

제안 해 주셔서 감사합니다. 그것을 시도해도 작동하지 않습니다. – qua

+0

그래, 내가 (Mac OSX에서) 내 작업 컴퓨터에서 시도한 시간에 그것을 작동했지만 그때부터 내 가정용 컴퓨터 (윈도우 7)에서 시도하고 실제로 않았다. – plannapus

13

이것은 Windows에서 R의 성가신 "기능"입니다. 지금까지 찾은 유일한 해결책은 문제의 텍스트 스크립트를 디코딩하는 데 필요한 로캘을 임시로 프로그래밍 방식으로 전환하는 것입니다. 따라서 위의 경우 일본어 로켈을 사용합니다.

## This won't work on Windows 
str <- "ていただけるなら" 
Encoding(str) #returns "UTF-8" 
write.table(str, file="c:/chartest.txt", quote=F, col.names=F, row.names=F) 
## The following should work on Windows - first grab and save your existing locale 
print(Sys.getlocale(category = "LC_CTYPE")) 
original_ctype <- Sys.getlocale(category = "LC_CTYPE") 
## Switch to the appropriate local for the script 
Sys.setlocale("LC_CTYPE","japanese") 
## Now you can write your text out and have it look as you would expect 
write.table(str, "c:/chartest2.txt", quote = FALSE, col.names = FALSE, 
      row.names = FALSE, sep = "\t", fileEncoding = "UTF-8") 
## ...and don't forget to switch back 
Sys.setlocale("LC_CTYPE", original_ctype) 

위의 그림은이 스크린 샷에서 볼 수있는 두 개의 파일을 생성합니다. 첫 번째 파일은 원하는 코드가 아닌 유니 코드 코드 포인트를 보여 주며, 두 번째 파일은 일반적으로 예상되는 글리프를 표시합니다.

Japanese text

지금까지 아무도이 R.에서 일어나는 이유는 this 게시물에 언급로 펄은, 어떻게 든 문제의 둘레에 얻을 수 있기 때문에 Windows의 피할 수없는 기능이 아닙니다 나에게 설명 할 수 없었다.

+0

답변 해 주셔서 감사합니다. 일본어는 단지 예일 뿐이며 모든 언어 유형에 적합한 언어를 원합니다. 그래도 유망한 소리하지 않습니다. – qua

+0

@qua - 예, 당신이 다소 이상한 곳에서 일본어 문자열을 어겼다는 것을 감안할 때 무작위적인 예가 될 것이라고 생각했습니다. 불행히도이 시점에서 R에 대한 더 나은 솔루션이 존재하지 않는다고 생각합니다. 그러나이 질문에 대한 답변을 직접 만드십시오. 나는 (다른 문제들 중에서) 스크립트가 사용되는 것을 추측해야하고 인코딩 유형을 설정하는 확실한 방법이 없기 때문에 미리 스크립트를 알지 못한다면 내 접근 방식에 어려움을 겪을 수 있다는 것에 동의한다. – SlowLearner

+0

@SlowLearner LC_CTYPE의 모든 유효한 값을 나열하는 방법이 있습니까? – panterasBox