2016-08-09 1 views
0

매개 변수 --codepage : 1252를 사용하여 Delphi 2007에서 작성한 프로젝트를 컴파일하려고합니다. Windows 10이 설치된 컴퓨터에서는 모든 것이 정상이며 스페인어 문자열이 올바르게 표시됩니다. Windows 8 매개 변수가있는 컴퓨터에서 동일한 작업을 수행 할 때 - 코드 페이지 : 1252는 변경되지 않습니다. 컴퓨터가 작동하지 않는 곳에서 teamcity 에이전트가 있기 때문에 필요합니다. 비슷한 문제가 있습니까? 또는 시스템을 다시 시작해야하는 Windows 속성에서 변경하지 않고 비 유니 코드 응용 프로그램에서 스페인어 문자를 올바르게 표시 할 수 있으며 팀시 서버에 문제가 있습니다.코드 페이지 매개 변수 및 팀십이있는 Delphi 2007 컴파일

편집 :

나는 비 유니 코드 응용 프로그램에 대한 폴란드어를 설정 한 두 컴퓨터에

과 :

  1. 윈도우 10 -, 스페인어 문자로 컴파일 스페인어 PC에 EXE 파일을 복사하고 더 스페인어 없다 문자.
  2. Windows 10 - 스페인어 문자로 컴파일하고 --codepage : 1252 매개 변수를 dproj "1252"로 설정하고 exe 파일을 스페인어 PC로 복사하고 스페인어 문자가 올바르게 표시됩니다.
  3. Windows 10 - dcc32.exe를 사용하여 명령 줄에서 스페인어 문자 및 --codepage : 1252 매개 변수로 컴파일하고, exe 파일을 스페인어 PC 및 스페인어 문자로 복사합니다. 스페인어 문자가 없습니다.
  4. Windows 8 - 스페인어 문자로 컴파일하고 exe 파일을 스페인어 PC에 복사하며 스페인어 문자가 없습니다.
  5. Windows 8 - 스페인어 문자 및 --codepage : 1252 매개 변수로 컴파일하고 exe 파일을 스페인어 PC에 복사하며 스페인어 문자가 없습니다.

델파이로 컴파일하는 것과 dcc32.exe를 사용하는 것의 차이점은 델파이가 같은 방식으로 dcc32를 사용하기 때문에 동일한 출력이어야합니다. 출력으로 볼 수 있습니다.

UPDATE : 컴파일 델파이 IDE에서 :

더 시험 후 나는 결론이 "--codepage : 1252"모든 파일은 작업의 ANSI 형식을 가지고있다. UTF-8로 변경하면 작동하지 않습니다. 명령 줄에서 어떤 경우와 조합으로 작동하지 않습니다.

답변

0

제대로 작동하는 컴퓨터에서 파일 형식을 UTF-8로 변경하고 저장하십시오 (프로젝트의 모든 파일에 대해 자동으로 파일을 수행 할 수 있는지 여부가 확실하지 않습니다. 그 코드 페이지에 상관없이 모든 컴퓨터에서 작동합니다.

이 파일 형식을 변경 편집기 창의 상황에 맞는 메뉴를 사용합니다.

+0

UTF-8로 변경하면 모든 파일에 ANSI 형식의 스페인어 문자가 올바르게 적용됩니다. –

+0

그럼 나는 아이디어가 없어. 미안해. – dummzeuch

+0

소스 파일 인코딩을 UTF-8로 설정하고 런타임시'AnsiString' 변수/속성에 문자열 리터럴을 전달할 때'UTF8Decode()'를 사용하십시오. 그러면 UTF-8에서 OS가 현재 사용중인 ANSI 코드 페이지로 변환됩니다. –

1

델파이 2007는 여전히 안시 기반 RTL을 사용하는 델파이의 마지막 버전입니다/VCL. 네이티브 GUI 구성 요소는 OS의 기본 Ansi 코드 페이지를 사용하므로 소스 코드이 Latin1/스페인어로 인코딩되어 있는지 여부는 문제가되지 않습니다 (--codepage:1252 매개 변수는 컴파일러에게 알려줍니다. GUI이 스페인어가 아닌 시스템에서 스페인어 데이터를 올바르게 표시 할 수없는 경우.

언급 한대로 소스 코드은 Latin1/스페인어 대신 UTF-8로 저장해야합니다. 그러나 런타임시 Ansi 기반 실행 파일에서 유니 코드 데이터를 표시하려면 데이터를 유니 코드로 변환하고 TNT Unicode controls과 같은 타사 유니 코드 GUI 구성 요소를 사용해야합니다. 또한 Handling a Unicode String in Delphi Versions <= 2007을 참조하십시오.

그렇지 않으면 기본 유니 코드 기반 RTL/VCL을 사용하는 Delphi 2009 또는 이후 버전으로 업그레이드하십시오. Delphi는 2008 년 이래로 유니 코드 제품이었습니다. 이제는 ANSI를 사용할 때입니다.

+0

그러나 델파이에서 컴파일 할 때 작동하며 dproj 파일에 1252 매개 변수가 있습니다. 폴란드어 PC에서 스페인어 버전을 컴파일했습니다. --codepage : 1252 매개 변수를 사용하여 명령 줄에서 dcc32.exe를 실행해도 스페인어 문자가 없습니다. –

+0

'DCC_CodePage'와'--codepage'는 소스 코드 자체의 인코딩에만 적용됩니다. 컴파일 된 앱의 런타임 동작에는 아무런 영향을 미치지 않습니다. 여전히 AnsiString과 ANSI 기반 API를 기반으로하는 Delphi 버전을 사용하고 있기 때문에 런타임에 OS 코드 페이지를 사용하여 소스 코드 내에서 정적으로 정의한 데이터가 * 해석 될 것입니다. 응용 프로그램이 다른 언어를 사용하는 여러 컴퓨터에서 실행되는 경우 런타임마다 코드 페이지간에 데이터 변환을 수행하거나 ANSI에서 완전히 벗어나 유니 코드를 대신 사용해야합니다. –

관련 문제