안녕하세요. MyBB 포럼에서 가져온 게시글과 심지어 사용자 이름에 ’나  같은 무작위 문자들이 표시되고 있습니다.
WordPress에서 비슷한 현상에 대한 보고들을 살펴본 결과, 이는 Latin1과 UTF-8 인코딩 문제일 수 있다고 추측됩니다.
사후에 이러한 문자들을 제거하는 쉬운 방법이 있을까요?
또한 이 문자들이 원래 어떤 문자를 대체한 것인지 모르겠습니다. 어떤 원본 문자였을지 떠오르지 않습니다.
그리고 일부 가져온 게시글에는 파싱되지 않은 MyCode가 많이 포함되어 있습니다. Discourse에서 이를 파싱하는 방법이 있을까요?
pfaffman
(Jay Pfaffman)
2
네. 제 추측도 그렇습니다. 비슷한 문제가 있는 임포트를 작업하고 있습니다. 대부분은 꾸러미 따옴표(curly quotes)와 emdash 같은 것들입니다.
그다지 쉽지는 않지만, force_encoding을 수행하거나 문자를 하나씩 교체하려는 후처리(post-processing)를 수행할 수 있습니다.
다음과 같은 코드처럼요.
Post.all.each do |post|
post.raw = post.raw.force_encoding('utf-8').encode("Windows-1252").force_encoding('utf-8')
post.save!
post.rebake!
end
하지만 라이브 데이터에서 실행하기 전에 스테이징 사이트에서 충분히 테스트해 보시는 것이 좋습니다.
제이, 감사합니다.
근본적인 문제를 해결하는 지능적인 방법이 있을까요? 예를 들어, 기존 포럼에서 데이터베이스를 내보낸 다음, 문자 및 mycode 문제를 제거한 상태로 다시 가져오는 방식 같은 것 말입니다.
pfaffman
(Jay Pfaffman)
4
아직 공개하지 않아 처음부터 다시 시작할 수 없는 상황이라면, 그것이 최선의 방법입니다.
사이트가 공식적으로 공개되지는 않았지만, MyBB에서 내보낼 때 문자 인코딩 문제와 mycode 파싱을 처리하는 가장 좋은 방법은 무엇인가요?
Falco
(Falco)
6
가능한 경우 모든 데이터를 UTF-8로 내보내면 이러한 문제를 해결할 수 있습니다.
원래 MyBB 설치 환경으로 돌아가서 관리자 제어판의 도구 및 유지보수/시스템 상태 메뉴에서 경고 메시지를 발견했습니다.
데이터베이스에서 서로 다른 인코딩을 사용하는 것은 권장하지 않습니다. 이로 인해 예상치 못한 동작이나 MySQL 오류가 발생할 수 있습니다.
테이블 목록이 표시되었고, 대부분이 UTF-8 형식인 것을 확인할 수 있었지만 일부는 그렇지 않았습니다. 특히 플러그인과 관련된 테이블 중 일부는 구형 형식을 사용하는 것으로 보였습니다.
‘전체 변환’ 링크를 클릭하자 /inc/config.php 파일을 편집하여 4바이트 UTF-8을 완전히 지원하도록 해야 한다는 응답이 나타났습니다.
$config[‘database’][‘encoding’] = ‘utf8mb4’;
config.php 파일을 편집하고 다시 변환을 시도한 결과, 이제 모든 테이블이 일치하는 것으로 표시됩니다. Discourse로 다시 가져오는 것을 시도해 보고, 문자 문제가 해결되는지 확인 후 다시 보고하겠습니다.
다만, MyCode 파싱 문제는 여전히 어떻게 처리해야 할지 모르겠습니다.
riking
(Kane York)
8
예시나 자세한 내용이 전혀 포함되어 있지 않았습니다. 이 시점에서는 새로운 스레드를 시작하고, 이 스레드는 문자 인코딩 후속 조치에 집중하는 것이 가장 좋을 수 있습니다.
안녕하세요, 예제가 포함된 새 스레드는 여기 있습니다.