Rails : rake db : seed를 실행할 때 US-ASCII (인수 오류)의 잘못된 바이트 시퀀스


87

rake db:seedRails앱 에서 실행할 때 다음 오류가 발생합니다.

US-ASCII의 잘못된 바이트 시퀀스 (인수 오류)

방금 science_majors시드 파일을 추가 하고 다운로드 rake db:seed했는데 이제 실행 하면 다음 오류가 발생합니다.

잘못된 바이트 시퀀스 오류

이유는 무엇이며 어떻게 고칠 수 있습니까?

seed.rb의 일부

@college = College.find_or_create_by_name!('University of Pittsburgh')
if @college.update_attributes(
  url: 'university-of-pittsburgh',
  public: 'Public',
  years: '4-year',
  category: 'National University',
  calendar: 'Semester',
  location: 'Pittsburgh, PA',
  setting: 'Large City (250-500k)',
  retention: '90',
  majors: 'business/marketing: 15%|social sciences: 14%|health professions: 11%|english: 10%|engineering: 9%|psychology: 8%|biology: 7%|history: 5%',
  scholarships_link: 'http://www.oafa.pitt.edu/universityschlrs.aspx',
  map: '<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=university+of+pittsburgh&amp;aq=&amp;sll=40.444261,-79.970448&amp;sspn=0.142165,0.251656&amp;ie=UTF8&amp;hq=university+of+pittsburgh&amp;t=m&amp;ll=40.443486,-79.958245&amp;spn=0.010798,0.021038&amp;output=embed"></iframe><br /><small><a href="https://maps.google.com/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=university+of+pittsburgh&amp;aq=&amp;sll=40.431368,-79.9805&amp;sspn=0.142165,0.251656&amp;ie=UTF8&amp;hq=university+of+pittsburgh&amp;t=m&amp;ll=40.443486,-79.958245&amp;spn=0.010798,0.021038" style="color:#0000FF;text-align:left">View Larger Map</a></small>',
  street_view: '<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.com/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=University+of+Pittsburgh,+4200+Fifth+Ave,+Pittsburgh,+PA&amp;aq=0&amp;oq=uni&amp;sll=40.444261,-79.970448&amp;sspn=0.142165,0.251656&amp;ie=UTF8&amp;hq=University+of+Pittsburgh,+4200+Fifth+Ave,+Pittsburgh,+PA&amp;ll=40.443486,-79.958245&amp;spn=0.010798,0.021038&amp;t=m&amp;layer=c&amp;cbll=40.441775,-79.956671&amp;panoid=BgWQKMiSI1fpwP7JUF16Vg&amp;cbp=12,45.25,,0,-3.34&amp;output=svembed"></iframe><br /><small><a href="https://maps.google.com/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=University+of+Pittsburgh,+4200+Fifth+Ave,+Pittsburgh,+PA&amp;aq=0&amp;oq=uni&amp;sll=40.431368,-79.9805&amp;sspn=0.142165,0.251656&amp;ie=UTF8&amp;hq=University+of+Pittsburgh,+4200+Fifth+Ave,+Pittsburgh,+PA&amp;ll=40.443486,-79.958245&amp;spn=0.010798,0.021038&amp;t=m&amp;layer=c&amp;cbll=40.441775,-79.956671&amp;panoid=BgWQKMiSI1fpwP7JUF16Vg&amp;cbp=12,45.25,,0,-3.34" style="color:#0000FF;text-align:left">View Larger Map</a></small>',
  housing: '<iframe src="http://www.tour.pitt.edu/tour-categories/residence-halls" scrolling="no" height="820" width="900"></iframe>',
  food: '<div style="overflow: hidden; max-width: 1000px;"><iframe scrolling="no" src="http://www.pc.pitt.edu/dining/menus.php" style="margin-left: 0; height: 2000px; margin-top: -370px; margin-bottom: -375px; width: 750px;"></iframe></div>',
  weather: '<div style="overflow: hidden; max-width: 500px;"><iframe scrolling="no" src="http://www.weather.com/weather/wxclimatology/monthly/graph/USPA1290" style="margin-left: -40px; height: 1570px; margin-top: -490px; width: 500px;"></iframe></div>',
  dorms: 'Towers (fr.)|Sutherland (fr.)|Lothrop (fr.)|Nordenberg (fr.)|Holland (fr.)|Forbes (fr.; honors)|McCormick|Brackenridge|Amos|Bruce|Panther|Pennsylvania|Ruskin|Bouquet Gardens|Oakwood Apartments|Centre-Plaza Apartments|Forbes-Craig Apartments (honors)',
  science_majors: 'Actuarial Mathematics|Applied Mathematics|Bioinformatics|Biological Sciences|Chemistry*|Computer Science|Ecology and Evolution|Environmental Geology|Environmental Studies|Geology|History and Philosophy of Science|Linguistics*|Mathematics*|Mathematics-Economics|Mathematics-Philosophy|Microbiology|Molecular Biology|Natural Sciences Area|Neuroscience*|Physics*|Physics and Astronomy|Scientific Computing|Statistics',
  social_science_majors: 'Economics*|Economics–Statistics|History*|Political Science*|Politics-Philosophy|Psychology|Sociology*|Urban Studies',
  humanities_majors: 'Africana Studies*|Africana Studies–English|Anthropology|Chinese*|Classics*|English Literature*|English Writing|Film Studies*|French*|German|History of Art & Architecture|Humanities Area|Italian*|Italian Studies|Japanese*|Liberal Studies|Music*|Philosophy*|Religious Studies*|Russian|Slavic Studies|Spanish|Studio Arts*|Theatre Arts*',
  business_majors: 'Accounting|Finance|General Management|Global Management|Marketing',
  engineering_majors: 'Bioengineering*|Chemical Engineering*|Civil Engineering*|Computer Engineering|Electrical Engineering*|Engineering Physics|Industrial Engineering*|Materials Science and Engineering*|Mechanical Engineering*',
  professional_majors: 'Administration of Justice*|Applied Developmental Psychology|Architectural Studies|Athletic Training|Clinical Dietetics and Nutrition|Communication: Rhet & Comm|Communication Science|Dental Hygiene|Emergency Medicine|Health Information Management|Health Services|Health and Physical Activity|Information Science|Legal Studies*|Media and Professional Communications|Nursing|Pharmacy|Public Service*|Rehabilitation Science|Social Work*'
)
else
  # handle validation errors
end

@college= College.find_or_create_by_name!('Harvard')
if @college.update_attributes(
  url: 'harvard',
  public: 'Private',
  years: '4-year',
  category: 'National University',
  calendar: 'Semester',
  location: 'Cambridge, MA',
  setting: 'Small City (50-250k)',
  degrees: 'Bachelors, Masters, Doctoral',
  rotc: 'Air Force, Army, Navy',
  considered: 'Academic GPA|Alumni Relation|Application Essay|Character/Personal Qualities|Extracurricular Activities|First Generation College Student|Geographical Residence|Interview|Racial/Ethnic Status|Recommendations|Rigor of secondary school record|Standardized Test Scores|Talent/Ability|Volunteer Work|Work Experience',
  student_faculty: '7 to 1')
else
  # handle validation errors
end

나는 다른 모든 대학을 생략했습니다. 나는 지금까지 200 개의 학교를 가지고 있지만, Pitt는 지금까지 포괄적 인 데이터를 가진 유일한 학교입니다. 나머지는 Harvard와 같은 기본 데이터 만 있습니다. 또한 간결함을 위해 Pitt에 대한 일부 데이터를 생략했지만 나머지를 포함하려면 알려주세요.

편집 : 나는 *'s in 을 꺼내고 science_majors실행 하려고 시도했지만 rake db:seed아무것도 변경하지 않았습니다.

답변:


183

파일 시스템이 추가 한 날짜를 인코딩하도록 구성되지 않았기 때문에 인코딩 오류가 발생했습니다 (이전 데이터 시드에 없었던 새 문자 (HTML 엔터티 인코딩 맵 URL에있을 수 있음)가 포함되어있을 수 있기 때문에). .

다음은 컴퓨터에서 UTF-8 로케일을 설정하여이 오류를 해결해야합니다.

# from your command line
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
bundle

시스템 로케일 설정의 이점은 모든 gem (앞으로)이 UTF-8 인코딩을 사용하여 번들로 제공된다는 것입니다.

편집하다:

또는 시스템 인코딩을 변경하지 않으려면 Gemfile에서 인코딩 표준을 지정하여 프로젝트 전체에 인코딩을 설정할 수 있습니다.

if RUBY_VERSION =~ /1.9/ # assuming you're running Ruby ~1.9
  Encoding.default_external = Encoding::UTF_8
  Encoding.default_internal = Encoding::UTF_8
end

1
도움이되어 기쁩니다. 이 접근 방식을 사용하는 경우 프로젝트를 배포 한 모든 환경의 로케일이 UTF-8로 설정되어 있는지 확인하세요. 그렇지 않으면 #encoding utf-8다른 포스터가 당연히 메모 하듯이 파일이 올바르게 인코딩되었는지 확인하기 위해 파일 상단에 추가해야 합니다.
zeantsoi 2013-06-10

나는 실제로 #encoding utf-8을 제거하고 당신이 말한 것을 수행하려고했지만 작동하지 않았습니다. ~/collegeanswers >> export LANG=en_US.UTF-8 ~/collegeanswers >> export LC_ALL="en_US.UTF-8" ~/collegeanswers >> bundle Using rake (10.0.4) . . Using i18n (0.6.1) Your bundle is complete! Use bundle show [gemname]`은 번들 gem이 설치된 위치를 확인합니다. ~ / collegeanswers >> rake db : seed rake aborted!`이유를 아십니까?
Adam Zerner 2013 년

당신의 rake오류 는 무엇입니까 ? 기존 gem은 아직 파일 시스템 인코딩과 함께 작동하도록 구성되지 않았을 것입니다. bbundle exec gem uninstall i18n그런 다음 시도하십시오 bundle install.
zeantsoi

내 레이크 오류는 invalid byte sequence in US-ASCII (ArgumentError) . 방금 당신이 말한 것을 시도했지만 같은 오류가 발생했습니다.
Adam Zerner 2013 년

웹 서버를 다시 시작하셨습니까? 달성하려는 것을 달성하기위한 더 많은 옵션을 제공하기 위해 내 답변을 업데이트했습니다.
zeantsoi

64

더하다

#encoding: utf-8

파일 맨 위에


왜 지금 그렇게해야하는데 그 전에는 그럴 필요가 없습니까?
Adam Zerner 2013 년

나는 그것을 시도하고 btw 작동했습니다. 하지만 이전에는 왜 모든 것이 작동했는지 알고 싶습니다. 이제 작동하려면이를 추가해야합니다.
Adam Zerner 2013 년

1
어쩌면 당신은 당신의 파일에 특별한 UTF-8 표시를 추가 .. :)
BvuRVKyUVlViVIc7

방금 다른 사람의 답변에 대한 업데이트를 읽었으며 실제로 더 포괄적이므로 수락 된 답변으로 표시하겠습니다.하지만 여전히 귀하의 도움에 감사드립니다!
Adam Zerner 2013 년

39

export RUBYOPT="-KU -E utf-8:utf-8"GH 스레드 에서 언급 한대로 시도 할 수도 있습니다.


감사! 그게 도움이 된 유일한 것입니다shotgun-0.9.1/bin/shotgun:94:in `[]': invalid byte sequence in US-ASCII (ArgumentError)
Slava V

19

루비 도커 컨테이너에서이 문제가 발생하면 다음 중 하나를 설정할 수 있습니다 LANG=C.UTF-8.

docker run -it --rm -e LANG=C.UTF-8 ruby ...

또는 이 호를보십시오 .


또는이 답변의 링크에서 볼 수 있듯이 고유 한 Docker 이미지를 만드는 경우 Dockerfile에 'ENV LANG = C.UTF-8'을 추가합니다
Alex

7

다른 사람들이 제안한 것처럼, 나는 #encoding: utf-8내 파일 (이 경우 seed.rb)의 맨 위에 추가 했지만 여전히 레이크 작업이 작동하도록 할 수 없습니다.

흥미롭게도 한 친구는 시드 파일의 상단에서 레일에서 생성 된 추가 주석을 제거하여 남도록 권장했습니다 #encoding: utf-8.

당신은 무엇을 알고 계십니까?


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.