iso-8859-1과 같은 UTF-8이 아닌 다른 문자 인코딩을 가진 메시지는 정상적으로 가져와집니다.
script/import_scripts/mbox/support/indexer.rb부터 소스를 탐색하여 문제의 근본 원인을 파악해 보기 전에, 혹시 이 문제를 알고 계신 분이 계신가요? 이는 코드베이스가 아닌 환경적인 문제일 수도 있나요? 메일링 리스트 모드로 실행 중인 사용자가 이 인코딩으로 답장을 보낼 때에도 동일한 문제가 발생하는가요?
간단한 테스트를 해보았는데 Email::Receiver는 정상적으로 작동하는 것 같습니다. 입력을 UTF-8로 변환합니다. 이후 인코딩이 왜 잘못될 수 있는지 이유를 찾을 수 없습니다.
[1] pry(main)> raw_email = File.read("/tmp/windows.txt");
[2] pry(main)> receiver = Email::Receiver.new(raw_email, convert_plaintext: true, skip_trimming: false);
[3] pry(main)> body = receiver.select_body;
[4] pry(main)> receiver.mail.charset
=> "windows-1252"
[5] pry(main)> body.first.encoding
=> #<Encoding:UTF-8>
[6] pry(main)> puts body.first;
cette réflexion me fait penser : y\-a\-il une obligation/raison \(en dehors du coup de maintenannce\) à avoir un même outil pour les 2 fonctionnalités \(interactions vs galerie\) ?
빠른 테스트를 해주셔서 감사합니다. 제가 직접 해보는 법을 몰랐습니다 가져오기 컨테이너에 뭔가 누락된 건 아닌가요? 여러분이 하신 내용을 재현해서 거기서부터 탐색해 보고 싶습니다. 만약 아무것도 찾지 못하면, 이 메일 하나만 포함된 받은편지함으로 mbox 가져오기 절차를 사용하여 문제를 재현하는 방법을 안내해 드리겠습니다.
또는 mbox 파일에서 메시지가 추출되는 방식에 차이가 있을 수 있습니다. 여기가 코드 경로가 다른 부분입니다. 위의 raw_email = File.read("/tmp/windows.mbox")는 정규 표현식으로 파일을 분할하는 방식과 다르며, 아마도 문제가 여기서 발생했을 가능성이 있습니다.
line.scrub가 원본과 다른 내용으로 변환되도록 하는 책임이 있습니다. 이 부분을 제거하면 정규 표현식이 다음과 같은 오류를 발생시킵니다:
...
1: from /var/www/discourse/script/import_scripts/mbox/support/indexer.rb:174:in `block in each_mail'
/var/www/discourse/script/import_scripts/mbox/support/indexer.rb:174:in `=~': invalid byte sequence in UTF-8 (ArgumentError)
실제로 UTF-8이 아니기 때문이죠
이 문제를 어떻게 해결해야 할지 아이디어가 있으신가요? 아마 메일 헤더에 대해 문자 집합(charset)만 먼저 확인하는 패스를 거치는 것이 좋을지도 모르겠습니다. 여기에는 달걀과 닭 문제( 과 )가 있는 것 같습니다.