2012-12-17 4 views
0

serialize를 사용하지만 일부 텍스트가 일반 텍스트를 입력 한 후 이상한 문자를 얻는 필드가있는 클래스가 있습니다. 인코딩과 관련이 있나요? 이 문제를 어떻게 해결할 수 있습니까?레일 직렬화가 잘못된 문자를 제공합니다.

나는 그들의 PostgreSQL 데이터베이스와 함께 Heroku를 사용합니다. SQLite에서 그것을 할 때 그것은 매력처럼 작동합니다.

SQLite는 :

Ik zeg wat ik voel.

 Doe ik ... 

포스트 그레스 :

Ik zeg wat ik voel.â¨â¨ Doe ik ... 

감사합니다!

+0

utf8을 pg에 명시 적으로 사용하고 있는지 확인하십시오. 너무. –

답변

0

포스트 그레스에서는 ISO-8859-1에서 UTF-8 바이트를 해석하고 있습니다. 귀하의 게시물에서 2x U+2028 line separators이 주어지며 UTF-8 표현이 0xE2 0x80 0xA8인데 이는 중간에 0x80이 게시자에게 전송되지 않은 보이지 않는 제어 문자 인 ISO-8859-1로 해석 될 경우 â¨으로 표시됩니다 .

그래서 문제는,에 결과를보고 UTF-8에 대한 올바른 바이트를 받고 있지만, ISO-8859-1로 해석대로입니다.

1

먼저 postgresql과 UTF-8 인코딩 시스템 (가장 안전한 것)이 config/database.yml에 있는지 확인하십시오. postgres 연결에 인코딩 UTF-8을 설정했습니다. 그 문제가 해결되지 않는 경우

는 다음 파일에 syck에 이상한 문자를 수정해야

require 'yaml' 
YAML::ENGINE.yamler = 'syck' 

설정/boot.rb 쓰기

을 YAML 엔진을 변경합니다.

+0

감사합니다. 이미 사용 중이며'config.encoding = "utf-8"설정을 확인했습니다. Heroku는 database.yml 파일을 자동으로 생성하므로 인코딩을 검사하는 방법을 찾아야합니다. 감사 –

관련 문제