3

rake assets:precompile을 실행하려고하면 레일스 앱이 이상한 오류가 발생합니다. 다음과 같이 보입니다.레이크 에셋을 실행할 때 문자 인코딩 오류가 발생했습니다.

rake aborted! 
Invalid US-ASCII character "\xE2" 
    (in /Users/lee/Code/draper/app/assets/stylesheets/application.css.scss) 
(sass):9 

유효하지 않은 문자가 내 코드에 들어갔을 수 있습니다. 트위터 부트 스트랩 (boostrap-sass gem)을 사용하고 있는데 내 bootstrap_and_overrides.css.scss 파일이 범인 인 것 같습니다. 나는 이미 이상한 문자를 꺼내기 위해 텍스트 메이트의이 파일을 처음부터 다시 만들려고 시도했지만 작동하지 않았다. 내 bootstrap_and_overrides.css.scss의 상단이 추가되어 작동하는 것 같다 유일한 것은 :

@charset "UTF-8"; 

나 레이크 자산 실행할 수 있습니다 : 사전 컴파일을하고 Heroku가에 배포,하지만 그건 해킹하고 더러운 수정처럼 보인다. 나는 Heroku에 다른 응용 프로그램을 배포 할 수 있습니다.이 응용 프로그램은 부트 스트랩을 훌륭하게 사용하며 Heroku는 배포시 사전 컴파일을 통해 레이크 (rake) 자산을 실행할 수 있습니다. 지금 당장이 문제를 해결할 수있는 유일한 방법은 @charset "UTF-8";을 포함시킨 다음 Heoku에 배포하기 전에 로컬로 rake assets:precompile을 실행하여 배포하는 동안 해당 단계를 건너 뛸 수 있도록하는 것입니다.

어디서 잘못되었는지 알 수 없습니다.

답변

5

CSS 파일을 확인하십시오. 문자 \xE2은 대개 ASCII 문자 세트의 일부가 아닌 큰 따옴표 문자와 관련이 있습니다. 편집자는 종종 더 기울어 진 큰 따옴표처럼 보입니다. “mystring” vs "mystring"

@charset 선언은 해킹이 아니지만 UTF-8 문자를 사용할 필요가없는 경우 제거하는 것이 더 나을 것입니다.

+0

이것은 실제로 문제가되었습니다. 이것은 \ xE2가 큰 따옴표와 관련 될 수 있다는 것을 발견 한 첫 번째 장소입니다. 그 힌트는 내가 문제를 발견 할 수있게 해 주었고 모든 문제를 일으키는 것은 실제로 기울어 진 큰 따옴표였다. 제거한 후에는 @charset 선언을 제거 할 수 있었고 모든 것이 잘 수행되었습니다. 정말 고마워! –

+0

'\ xe2'가 따옴표 인 경우 파일은 UTF-8조차 보이지 않습니다. – Esailija

+0

재미있는 큰 따옴표를 검색하면 두통의 시간 후에 추가적인 두통의 시간을 절약 할 수 있었기 때문에 Upvoting. 광산은 rake db : migrate에서 오류가 발생했습니다. 고마워, 마크! –

2

파일의 올바른 인코딩을 선언하는 것은 해킹이 아니므로 텍스트 파일에는 항상 선언 된 인코딩과 실제 인코딩이 필요합니다. 어쨌든, 당신은 단지 파일의 iconv 모든 비 ASCII 문자를 제거 할 수 있습니다 :

iconv -t ASCII//IGNORE -f UTF8 <application.css.scss> application.css.scss.ascii 

그런 다음 결과 파일은 거의 모든 인코딩으로 작동합니다.

+0

레일즈가 config/application.rb에서'config.encoding = "utf-8"' –

+0

@LeeMcAlilly 권한으로 인코딩을 설정하기 때문에 그것이 내 css 파일에서 선언해야한다는 해킹이라고 생각했습니다. iconv 너를 위해 일해? – Esailija

+0

예, 파일을 정리하는 유용한 방법이었습니다. 나는 이전에 그것을 손으로 시도하고 있었고 그 문제를 일으키는 인물을 찾지 못했습니다. –

관련 문제