내가 사용하고 (그리고 붙어) 루비의 다음 버전 :루비 1.8.7에서 Microsoft Office "스마트"또는 "구두"따옴표/아포스트로피를 ASCII 또는 UTF-8 "직선"인용/아포스트로피로 변환하는 방법?
ruby 1.8.7 (2012-06-29 patchlevel 370) [x86_64-linux]
제가 인터넷 검색을 많이했지만, 나는 내 문제에 대한 작업 답을 찾을 수 없습니다. 일반적으로 사용자의 Microsoft Excel 스프레드 시트에서 가져올 CSV 파일을 가져오고 있습니다. CSV 부분에 문제가 없지만 MS "스마트"따옴표를 처리하는 방법을 알 수 없습니다. 내 테스트에 대한 나의 입력 파일은 DOS 형식이며,이 라인이 포함되어
쟌느 오닐을
는 AS 내 텍스트 편집기에서 보여 오닐의 O와 N 사이의 MS 곱슬 아포스트로피가있다"물음표 다이아몬드". 나는 다음과 같은 코드를하려고하면 곱슬 아포스트로피가 제거됩니다 : 루비 1.8.7에서 정규 표현식을 작성하는 방법이 있나요
쟌느 오닐
:
이# replace Microsoft Office 'smart' quotes
# gem to detect character encoding
require 'rchardet'
if name != nil
cd = CharDet.detect(name)
encoding = cd['encoding']
name = Iconv.conv('UTF-8//TRANSLIT', encoding, name)
end
이 바람직하지 않은 결과를 산출 곱슬 한 MS 문자를 감지하고 직선 문자로 바꿉니 까? 내 정규 표현식에서 16 진수 코드를 사용하여 시도했다,하지만 그들을 작동하게 만들 수 없습니다. Ruby 1.8.7이 1.9의 문자 인코딩을 처리하는 데 훨씬 제한적이라는 것을 알고 있습니다. 그러나 나는 그것에 매달 렸습니다. 이 프로젝트에서는 Ruby를 업그레이드 할 수 없습니다.
도움을 주시면 감사하겠습니다. 고맙습니다.
통조림업자에 의해 제안 된 게시물을 읽고 나면, 내가 그 결과 '¿ ½'하위 문자열을 대체 할 GSUB를 사용하여 시도 :
if name != nil
name = Iconv.conv("UTF-8", "cp1252//TRANSLIT", name)
name.gsub(/\u00ef\u00bf\u00bd/u, "'")
end
아아, 아니 사랑을. 그것은 여전히 같은 결과 :(
을 업데이트했다. 즉, 하나 개의 이상한 문자입니다. – Linuxios
코드를 수정하는 것이 완전히 새로운, 관련없는 코드를 작성하는 것보다 훨씬 낫습니다. 다시 작성해야합니다. 그것을 다시 통합 시켜라. –
[iconv를 사용하여 멀티 바이트 스마트 인용 부호를 확장 ASCII 스마트 인용 부호로 변환 할 수 있습니까?] (http://stackoverflow.com/questions/6087309/can-i-use-iconv-to-convert-multi- 스마트 - 따옴표 - 확장 - ascii - 스마트 - 따옴표) –