알아볼 수없는 기괴한 유니 코드 관련 문제가 발생했습니다.유니 코드 변환 문제 C++
기본적으로 명령 줄에서 수동으로 실행하면 다양한 입력에 대해 mbtowcs()가 성공적으로 호출되는 명령 줄 응용 프로그램이 있습니다 (http://www.cplusplus.com/reference/clibrary/cstdlib/mbstowcs). /)는 문자열을 조작하고 적절한 출력을 반환합니다.
응용 프로그램이 monit을 통해 자동으로 실행될 때마다이 함수는 정확한 바이트 수를 더 이상 변환하지 않으며 기본적으로 출력이 왜곡되어 유니 코드 오류 다이아몬드가 산재 해 있습니다. 나는 동일한 입력에 대해 이것을 테스트했다.
이것이 로케일 또는 컴퓨터의 일부 설정 (Ubuntu 서버 11.04)과 관련이 있다고 생각됩니다. 나는 setlocale (LC_CTYPE, "");을 호출하고있다. 내 시작 기능에서 성공적으로.
내 코드가 제대로 작동하려면 어떤 시스템 설정을 변경해야하는지 조언 해 줄 수 있습니까?
업데이트 : 문제를 해결 할 수 있습니다
setlocale(LC_CTYPE, "en_US.UTF-8");
에
setlocale(LC_CTYPE, "");
을 변경하는 것 같은데. 누구나 이것이 필요한 이유에 대한 정보를 제공하거나이를 피하기 위해 시스템 설정을 어떻게 바꿀 수 있습니까?
왜 처음에는 setlocale()을 호출합니까? UTF-8은 Linux의 모든 문자열에 대한 기본 인코딩으로 널리 사용됩니다. –