Windows에서 PHP 명령 행 스크립트의 출력은 현재 구성된 코드 페이지 및 콘솔 글꼴에 따라 해석됩니다. 서유럽에서는 보통 850 및 비트 맵이 기본값으로 사용됩니다.Windows 명령 프롬프트에서 UTF-8 출력 표시
C:\tmp>php test.php
Caf├®: 1,25 Ôé¼
usual workaround은을 사용하는 것입니다 : 일반적으로이 방법을 볼 것이다
<?php
echo 'Café: 1,25 €' . PHP_EOL;
... : 그건 스크립트가 UTF-8 (PHP 이후 사실상의 표준/5.4)과 같이 쓸 것을 의미한다 *.bat
래퍼 :
@echo off
chcp 65001 > NUL
php test.php
이 글꼴 문제가 해결되지 않습니다하지만 일반적으로 충분히 좋다.
내 이중 질문 :
그렇게 우리는 래퍼를 생략 할 수 PHP 내에서 코드 페이지를 설정할 수 있습니까? (
chcp
을 실행하는 프로그램 실행 함수를 사용하면 다른 프로세스에서 발생하기 때문에 작동하지 않습니다.)PHP에서 사용하는 콘솔 라이브러리의 제한 사항입니까? (Node.js를 스크립트는 항상 옆 UTF-8 소스에 상관없이 지역 코드 페이지, 글꼴에서 올바른 출력을 표시합니다.)
: 스크립트가 항상 올바른 코드 페이지를 사용하므로 당신에게 가능성을 제공
이
message
기능을 변경하는 Windows 콘솔에서 멀티 바이트 유니 코드를 제대로 지원하려면 저수준 콘솔 API와 상호 작용해야합니다. AFIAK, Java 및 Node.js는 이미이 작업을 수행하며 Python에는이를 사용 가능하게하는 드롭 인 모듈이 있습니다. PHP로 직접적으로 운이 없다면 PHP에서 UTF-8을 가져와 올바르게 렌더링하는 지원 언어로 래퍼를 작성할 수 있다고 가정합니다. –