2013-10-24 5 views
2

Qt 4를 사용하여 응용 프로그램을 만들었습니다. 소스로 latin-1을 사용했으며 항상 QString :: fromLatin1을 사용했습니다. 그러나 Qt 5로 포팅을 시도 할 때 (실제로 Qt 5와 Windows 8을 함께 사용했지만 Windows의 잘못이라고 생각하지 않습니다.) 인코딩은 실제로 텍스트 앞뒤에 이상한 공간이있는 것처럼 보입니다.Qt 5 인코딩 문제

이 Qt는 5/윈도우 8 실행중인 응용 프로그램입니다 : 당신이 볼 수 있듯이

Screenshot

에서, ç 및 및 ã 그들 사이에 추가 몇 가지 이상한 공간, 올바른 나타나지 않습니다. 또한 ó 문자는 공백없이 정확하게 나타납니다.

이 내가 QLabel을 설정하는 방법입니다

m_msgWelcome->setText(QString("Bem vindo ao biocódigo!\nSelecione uma opção ao lado para iniciar")); 

은 이미 성공하지 모두 QString::fromUtf8QString::fromLatin1을 시도했다.

+0

이상한 점이 있습니다. 실제 인코딩 문제에서 잘못된 문자가 또한 예상됩니다. 소스 파일에는 어떤 인코딩이 있습니까? 문자열을 "opção"로 줄이고 m_msgWelcome-> text(). toUtf8(). toHex()의 출력을 추가 할 수 있습니까? 특정 글꼴로 글꼴 렌더링 문제가 될 수도 있습니다. –

+0

toUtf8(). toHex()에 "6f70c3a7c3a36f"가 표시됩니다. 글꼴을 변경하면 문제가 해결 된 후, 이전에 작동했던 글꼴과 동일한 글꼴을 사용하고있는 이유를 알 수 없습니다. 이것을 답변으로 게시 하시겠습니까? –

답변

1

Qt5를 사용하면 일반적으로 모든 파일을 UTF-8로 저장할 수 있습니다 (QString::fromAnythingEncoding과 같은 메서드를 사용할 필요가 없음). 편집 다음 (모든 파일) 선택 인코딩 : 당신은이 작업을 수행 할 수 있습니다 Qt는 창조주와 함께

. 도구>>텍스트 편집기>행동>기본 인코딩 다음 UTF-8을 넣어 옵션 :

는 미래를 위해, 당신은 또한 기본 설정을 변경할 수 있습니다.

간격 문제가 계속 발생하면 다른 글꼴을 사용해보십시오.

+1

정말 그 이유는 아직 밝혀지지 않았지만 글꼴과 관련된 렌더링 문제였습니다. 그러나 인코딩 팁에 대한 큰 감사의 말로, 나는 악센트 부호가없는 코드를 잃지 않고 파일을 UTF-8로 변환하는 데 어려움을 겪었다. –

+0

내 소스 파일은 UTF8이지만 Qt Creator 편집기는 악센트 부호가있는 문자를 표시하지 않습니다. 너는 생각이 있니? 그것은 편집자와 관련된 문제이며 편집과 관련이 없습니다. – Sigur