2012-09-26 3 views
1

Ruby 1.9.3 용 DocSplit gem을 사용하여 유니 코드 UTF-8 버전의 워드 문서를 만듭니다. 필자가 놀랍게도 이러한 문서 중 하나의 특정 부분에 대한 테스트를 실행하는 동안 필자는 문자 인코딩에 불만을 갖기 시작했습니다.Rspec 테스팅에서 비 ASCII 문자 처리

아래 나열된 문제를 해결하기 위해 여러 가지 방법을 시도했지만 지금까지 ASCII가 아닌 문자를 모두 제거하는 것이 가장 좋습니다. 캐릭터가 DB에서 실제로 문제가 될 것이라고는 생각하지 않기 때문에 이것은 이상과는 거리가 멀다.

My CODES'S APOSTROPHE 

My CODES’S APOSTROPHE 

두 번째 아포스트로피가 구불 구불 보일 것입니다 :

gsub(/[^[:ascii:]]/, "") 

내 출력 내가 기대하고있는 무슨 대 모습의 샘플입니다. irb에 붙여 넣으면 다음과 같은 결과가 나타납니다. \ U + FFE2

나는이 캐릭터를 위해 Regexing을 특별히 시도했는데 Rubular에서 작동하는 것으로 보입니다. 그러나 내 모델에 넣으면 구문 오류가 발생합니다.

syntax error, unexpected $end, expecting ')' 
raw_title = raw_title.gsub(/’/, "") 

는 또한 UTF-8 인코딩을 강요했지만, 모든 UTF-8로 이미이는 효과가 나타나지 않습니다. US-ASCII로 출력을 시도했지만 바이트 시퀀스 오류가 발생합니다.

나는 또한 Ruby 라이브러리에있는 몇 가지 인코딩 옵션을 시도했다. 이것들은 기본적으로 Regex와 같은 것을했습니다.

이 모든 것은 테스트 목적으로 출력을 일치시키려는 것입니다. 나는이 특수 문자에 대해서도 염려해야 하는가? 맹목적으로 그들을 제거하지 않고 이러한 문자를 일치시키는 더 좋은 방법이 있습니까? 추가

답변

4

시도 : 실패한 RSpec에 파일의 맨 위에

# encoding: utf-8 

. 이렇게하면 다음과 같은 사항을 확인할 수 있습니다.

raw_title = raw_title.gsub(/’/, "") 

+0

감사 세바스티안, 즉 일 - 이것은 내가 아래의 링크에서 주어진 것을 시도

Iconv.conv('ASCII//IGNORE', 'UTF8', text_to_be_converted) 

을 사용하는 것입니다! 루비 파일에 이런 인코딩을 언제/어떻게 포함 시킬지 조금 더 설명 해주시겠습니까? – Paul

+1

읽기 : http://blog.grayproductions.net/articles/ruby_19s_three_default_encodings, 1.9의 인코딩 문제에 대한 훌륭한 기사입니다! –

+0

추가 정보 주셔서 감사합니다! 이 인코딩을 일반 파일에 추가하는 것은 나쁜 습관으로 간주됩니까? rspec에서이 작업을 수행해야합니까? – Paul

관련 문제