2009-08-28 2 views
9

레일 2.3.3과 루비 1.9.1을 사용하고 있습니다.ruby에서 레일의 인코딩 문제 1.9.1

일부가 포함 된보기를 렌더링하려고합니다. 부분 i에서는 UTF8로 인코딩 된 모델 필드를 출력합니다. 이것은 한편

ActionView::TemplateError (incompatible character encodings: ASCII-8BIT and UTF-8) on line #248 of app/views/movie/show.html.erb: 
245: <!-- Coloumn right | start --> 
246: <div class="col_right"> 
247: 
248:  <%= render :partial => 'movie_stats' %> 
249: 
250:  <!-- uploaders --> 
251:  <div class="box_white">  

실패, I를 출력 할 수있다 (그 일부가 아닌 경우) 나 직접 뷰에서 해당 필드를 사용하는 경우 잘 UTF8 콘텐츠 필드.

어떻게 해결할 수 있습니까? 이미 기본 인코딩 설정을 시도했지만 작동하지 않는 것 같습니다.

+0

기본 인코딩을 어떻게 설정 했습니까? 우리에게 모범을 보여줄 수 있습니까? –

답변

9

나는 이것도 가지고 있었기 때문에 올바른 답을 갖는 것이 가치 있다고 생각한다.

2.8.1 MySql gem은 UTF-8과 호환되지 않으므로 때때로 UTF 문자열을 반환하고 실제로 UTF-8 일 때 ASCII임을 나타내는 Rails를 사용합니다. 이것은 일이 폭발하게 만듭니다.

그래서 원숭이 패치를하거나 호환되는 MySql gem을 얻을 수 있습니다. 참조 : http://gnuu.org/2009/11/06/ruby19-rails-mysql-utf8/

2

Ruby 1.9에서 ERB의 인코딩 문제가있는 것 같습니다. 자세한 내용은 this Lighthouse ticket입니다. 해결 방법이 has been included 인 패치가 아마도 도움이 될까요?

문제는 루비 1.9 배포판의 erb 코드입니다. 'ASCII-8bit'인코딩을 강제하는 템플릿 코드를 컴파일 할 때 템플릿 코드에 멀티 바이트 문자가있는 경우 템플릿 코드가 'ASCII-8bit'문자열로 반환되고이 문자열이 'UTF8'문자열과 연결될 때 문제가 발생합니다. string with multibyte character이 인코딩 사이의 문자열은 둘 다 7 비트 문자 만있을 때만 호환되므로 예외가 발생합니다.

+1

는 mysql-gem이 원인이라고 판명했다. DB에서 UTF8이더라도 모든 문자열을 ASCII-8BIT로 반환했습니다. http://github.com/hectoregm/mysql-ruby/tree/master를 사용하여 수정했습니다. – tliff

+0

죄송합니다. molf, 나는이 문제를 경험 한 후이 원인을 downvoted뿐만 아니라 mysql 보석 결함이었습니다. 나는 버그가 조금 있다고 생각합니다. limbo 아무도 그 문제라면 정말로 확신하지 못합니다. –

0

문자열이 앞뒤로 전달되는 방식 (특히 문자열의 인코딩)과 관련하여 Ruby 1.9x와 mysql gem이 호환되지 않는 것 같습니다.

는 고정 서버

gem install mysql2 

을 실행하고 이전 대신이 보석을 사용하여 데이터베이스 구성 파일을 업데이트합니다.