2010-07-07 6 views
15

내 설정은 다음과 같습니다잘못된 바이트 시퀀스 (루비 1.9 + 레일 2.3.8 + MongoDB를 + mongo_mapper)

리눅스 + 내가 2.3.8 + MongoDB를 + mongo_mapper

다음 레일 루비 1.9 + http://railscasts.com/episodes/194-mongodb-and-mongomapper, 모든 것이 먼저 OK입니다. 영어 문자열을 성공적으로 삽입 할 수 있지만 일부 중국어 문자열을 삽입하면 삽입되지만 표시 할 수 없습니다.

invalid byte sequence in US-ASCII 

내가 MongoDB를의 데이터를 볼 수 mongo 명령을 사용하여, 그것은 맞습니다 :

웹 페이지는 예외를 보여줍니다. 레일이 왜 그들을 표시 할 수 없는지 나는 모른다.

미리 감사드립니다.

답변

20

환경에 다음 행을 추가하십시오 .rb.

Encoding.default_external = Encoding::UTF_8 
Encoding.default_internal = Encoding::UTF_8 

문제가 해결됩니다.

+0

이 줄 *을 구성 블록 내에 추가해야합니다. –

5

랙 응용 프로그램에서이 오류가 발생했습니다. config.ru

Encoding.default_external = Encoding::UTF_8 

    Encoding.default_internal = Encoding::UTF_8 

추가

은 나를 위해 그것을 해결.

18

당신은 ~/.profile, ~/.bash_profile 또는 유사한 당신이

export LC_ALL="en_US.UTF-8" 

를 작성하는이 오류를 해결 할 수 있습니다. 그것은 매력처럼 작동합니다.

+0

감사합니다!나는이 Jekyll 응용 프로그램을 몇 시간 동안 실행하도록 Heroku와 싸워 왔습니다. heroku config : add LC_ALL = "en_US.UTF-8"' – blockloop

+0

또한 Jekyll과 embed 명령 줄에서 grunt를 사용할 때 WebStorm 7의 문제를 해결합니다. –

0

OS의 locale 설정을 확인하십시오. en_US .UTF-8`로켈 환경 변수를 설정해야합니다. 그렇지 않으면이 문제가 발생할 수 있습니다.

운영 체제가 Ubuntu 인 경우 다음 명령을 입력하여 locale을 확인할 수 있습니다.

sudo locale 

한 다음 그것은 당신을 도울 수있는 다음과 같은 명령을

sudo locale-gen en_US.UTF-8 

를 입력하여 로케일을 다시 구성 할 수 있습니다. 감사. 아래

1
cd $HOME 
vi .bashrc 

추가 로케일의 conf :

export LANG="en_US.UTF-8" 
export LC_ALL="en_US.UTF-8" 
export LC_CTYPE=en_US.UTF-8 

저장하고 실행 소스 ~/.bashrc에

모든 문제는 내가 사용하던 것이 었 나를 위해 ~

0

괜찮습니다 루비의 이전 버전. rvm use 2.0 트릭을 만들었습니다.

관련 문제