FIX: 문자열 리터럴은 잘못 해석 됩니다 Visual Studio 2008 서비스 팩 1에서 Visual C++ 컴파일러에서 문자열 리터럴을 utf-8 인코딩을 사용 하 여 아시아 문자를 사용할 때


증상


다음 시나리오를 고려하십시오.
  • Microsoft Visual Studio 2008 서비스 팩 1 (SP1) Visual C++ 프로젝트를 만듭니다.
  • 프로젝트의 파일에 좁은 문자열 리터럴이 있습니다. 이러한 문자열 리터럴은 아시아 문자를 포함 하 고 "L." 문자로 시작 하지 않는
  • 문자열 리터럴을 utf-8 인코딩을 사용합니다.
이 시나리오에서 프로젝트를 컴파일할 때 문자열 리터럴은 잘못 해석 됩니다 컴파일러가. 또한 다음과 같은 문제 중 하나가 발생할.
  • 컴파일 작업이 성공합니다. 그러나 문자열 리터럴은 됩니다 잘못 표시 생성 된 응용 프로그램에서. 또한 프로젝트를 컴파일할 때 다음과 같은 경고 메시지에 나타날 수도.
    경고 C4566: 유니버설 문자 이름 'xx'로 표현되는 문자는 현재 코드 페이지에 제시될 수 없습니다.
  • 컴파일 작업이 실패합니다. 또한 프로젝트를 컴파일할 때 다음과 같은 오류 메시지가 나타날 수 있습니다.
    오류 C2078: 이니셜라이저가 너무 많습니다.

원인


이 문제는 컴파일러 "현상" 절에서 파일에 MBCS 인코딩 하는 것으로 가정 하기 때문에 발생 합니다. 이러한 동작 때문에 있는 compilerincorrectly 파일을 변환합니다.

해결 방법


핫픽스 정보

지원되는 핫픽스를 Microsoft에서 구할 수 있습니다. 그러나 이 핫픽스는 오직 이 문서에서 설명하는 문제를 해결하는 작업에만 사용됩니다. 이 문제가 발생하는 시스템에만 이 핫픽스를 적용해야 합니다.

핫픽스를 다운로드할 수 있는 경우, 이 기술 자료 문서의 상단에 "핫픽스 다운로드 가능" 섹션이 있습니다. 이 섹션이 표시 되지 않으면 Microsoft 고객 서비스 및 지원 핫픽스를 구하는 요청을 제출 합니다.

참고: 추가 문제가 발생하거나 문제 해결이 필요한 경우, 별도로 서비스를 요청해야 할 수도 있습니다. 추가 지원 질문과 이 특정 핫픽스가 필요하지 않은 문제에는 일반 지원 비용이 적용됩니다. Microsoft 고객 지원 전화 번호의 전체 목록을 확인하거나 별도 서비스 요청을 만들려면 다음 Microsoft 웹 사이트를 방문하십시오.참고: "핫픽스 다운로드 사용 가능" 형식은 핫픽스 사용이 가능한 언어를 표시합니다. 사용자 언어가 표시되지 않는 것은 핫픽스를 해당 언어로 사용할 수 없기 때문입니다.

전제 조건

Visual Studio 2008 서비스 팩 1 (SP1)이이 핫픽스를 적용 하려면 설치 되어 있어야 합니다.

다시 시작 요구 사항

Visual Studio 인스턴스가 사용 중인 경우이 핫픽스를 적용 한 후 컴퓨터를 다시 시작할 필요가 없습니다.

핫픽스 대체 정보

이 핫픽스는 다른 핫픽스를 대체 하지 않습니다.

파일 정보

이 핫픽스의 영어 버전은 다음 표에 열거된 파일 특성 (또는 그 이후의 파일 특성)을 가지고 있습니다. 이러한 파일의 시간과 날짜는 협정 세계시(UTC)로 나열되었습니다. 파일 정보를 볼 때는 로컬 시간으로 변환됩니다. UTC와 로컬 시간의 시차는 제어판의 날짜 및 시간 항목에서 표준 시간대 탭을 사용하여 찾을 수 있습니다.
파일 이름파일 버전파일 크기날짜시간플랫폼
C1.dll15.0.30729.4987678,72009-Mar-201010:18x86
C1xx.dll15.0.30729.49872,204,48809-Mar-201010:18x86
C1xx.dll15.0.30729.49872,215,24009-Mar-201010:18x86
C1xx.dll15.0.30729.49872,339,65609-Mar-201010:18x86
C1xx.dll15.0.30729.49872,505,55209-Mar-201010:18x86
C1xx.dll15.0.30729.49872,891,59209-Mar-201010:18x64

상태


Microsoft는 이 문제가 '적용 대상' 섹션에 나열된 Microsoft 제품의 문제임을 확인했습니다.

자세한 내용


컴파일러에서 오류를 해결 하려면이 핫픽스를 설치 하 고 바이트 순서 표시가 함께 파일을 저장 합니다. 또한 소스 파일에서 문자열 리터럴 직전에 다음 "pragma" 지시문을 추가 합니다.

#pragma execution_character_set("utf-8")
참고: "Pragma" 지시문은 다른 "pragma" 지시문으로 교체 될 때까지 "pragma" 지시문은 소스 파일에 대 한 번역 단위를 설정 합니다.