인코딩 문제: Qt 애플리케이션이 파일에서 ASCII가 아닌 문자를 모두 제거합니다.

인코딩 문제: Qt 애플리케이션이 파일에서 ASCII가 아닌 문자를 모두 제거합니다.

Qt 응용프로그램이 내 젠투 시스템의 ISO-8859 인코딩 파일에서 라틴어가 아닌 문자를 제거하고 있습니다. 실제로 저는 KDiff3 및 P4Merge를 사용하여 두 개의 독일어 파일("Wählen"에서 "Whlen" 생성)을 병합하려고 합니다. 두 도구 모두 발음 구별 부호를 표시하지 않으며 파일을 저장할 때 파일에서 사라집니다. Courier New는 Dejavu Monospace 글꼴을 사용하여 동일한 동작을 표시합니다.

UTF-8로 인코딩된 파일이 도구에 제공되면 라틴어가 아닌 모든 텍스트가 올바르게 처리됩니다.

GTK Meld(및 기타 모든 GTK 애플리케이션)는 문자(ISO-8859-1 및 UTF-8)를 매우 잘 처리합니다. 내 로케일 구성이라고 생각하지만 무엇이 잘못되었는지 알 수 없습니다 ...

어떤 아이디어가 있나요?

구성:

 $ locale -a
 C
 POSIX
 de_DE
 de_DE.iso88591
 de_DE.iso885915@euro
 de_DE.utf8
 de_DE@euro
 deutsch
 en_US
 en_US.iso88591
 en_US.utf8
 german

 $ locale
 LANG=en_US.UTF-8
 LC_CTYPE="en_US.UTF-8"
 LC_NUMERIC="en_US.UTF-8"
 LC_TIME="en_US.UTF-8"
 LC_COLLATE=C
 LC_MONETARY="en_US.UTF-8"
 LC_MESSAGES="en_US.UTF-8"
 LC_PAPER="en_US.UTF-8"
 LC_NAME="en_US.UTF-8"
 LC_ADDRESS="en_US.UTF-8"
 LC_TELEPHONE="en_US.UTF-8"
 LC_MEASUREMENT="en_US.UTF-8"
 LC_IDENTIFICATION="en_US.UTF-8"
 LC_ALL=

Qt 사용 플래그 x11-libs/qt-core-4.8.2:4:

exceptions glib iconv qt3support ssl (-aqua) -c++0x -debug -icu -pch
(-optimized-qmake%) (-qpa%)

답변1

UTF-8로 인코딩된 파일이 도구에 제공되면 라틴어가 아닌 모든 텍스트가 올바르게 처리됩니다.

그럼 나는 당신에게 제안합니다녹음파일을 UTF-8로 변환하고 병합한 다음 필요한 경우 다시 인코딩합니다.

GTK Meld(및 기타 모든 GTK 애플리케이션)는 문자(ISO-8859-1 및 UTF-8)를 매우 잘 처리합니다.

이것을 버그라기보다는 기능이라고 부를 수 있을 것 같습니다. 응용 프로그램이 현재 로케일의 문자로 해석할 수 없는 특정 바이트 시퀀스를 볼 때 몇 가지 옵션이 있습니다. 아마도 GTK가 하는 일이 바로 추측일 것입니다. 또는 해당 바이트를 오류로 간주하여 파일에서 제거할 수도 있습니다. 아니면 사용자에게 문제를 알리는 것이 더 나을 수도 있지만 분명히 KDE는 그렇게 멀리 가지 않습니다.

내 로케일 구성이라고 생각하지만 무엇이 잘못되었는지 알 수 없습니다 ...

로케일은 텍스트 파일이 UTF-8로 인코딩되어야 함을 나타냅니다. 그러나 귀하의 파일은 그렇지 않습니다. 따라서 차이점이 있습니다. 파일을 기록하거나 다른 로캘로 관련 프로세스를 시작하면 이 문제를 해결할 수 있습니다. 그 LC_CTYPE측면은 관련성이 있어야 하지만 LC_ALL확실히 하기 위해 첫 번째 측면부터 시작하십시오. 명령줄에서 명령을 호출할 때 명령 앞에 올바른 설정을 추가하기만 하면 됩니다.

LC_CTYPE=en_US.iso88591 kdiff3 foo bar

관련 정보