2013-07-07 6 views
4

에 대한 예상 결과를 생산하지 나는 다음과 같은 프로그램이 있습니다 TXT의 값은 일부 아랍어 문자로 설정되고printfn 국제 (비 라틴) 문자

let txt = "إتصالات" 
printfn "Text is: %s" txt 
0 // return an integer exit code 

합니다. 프로그램을 실행할 때 콘솔에 표시되는 내용은 문자가 아닌 일련의 물음표입니다. Visual Studio 2012 디버거에서 txt 변수에 대해 올바른 문자가 표시됩니다.

내가 뭘 잘못하고 어떻게 국제 문자를 올바르게 표시하나요?

+0

['Console.OutputEncoding'] (http://msdn.microsoft.com/en-us/library/system.console.outputencoding.aspx)를 설정 했습니까? 그리고 그 문자를 지원하는 콘솔 글꼴을 사용하고 있습니까? – Mgetz

+0

흥미롭게도 http://www.tryfsharp.org에서이 코드를 실행하면 올바른 결과가 산출됩니다. – JonnyBoats

답변

9

How to write unicode chars to console?에 따르면이 같은 콘솔에서 OutputEncoding 속성을 설정해야합니다

System.Console.OutputEncoding <- System.Text.Encoding.Unicode 
let txt = "إتصالات" 
printfn "Text is: %s" txt 
0 // return an integer exit code 

당신이 당신의 콘솔 글꼴을 변경해야하는 이유도 설명하기 때문에 그 질문에 대한 대답은하지만 읽기 가치가있다 에 실제로이 작품을 만드는 방법도.

업데이트 : 예제의 아랍어 텍스트가 StackOverflow에서 잘 렌더링되었으므로 CSS에서 미리 서식이 지정된 텍스트를 렌더링하는 데 사용 된 글꼴을 확인했습니다. 이 목록과 Windows 문자표 도구 (시작 -> 모든 프로그램 -> 보조 프로그램 -> 시스템 도구 -> 문자표)를 사용하여 아랍어 문자를 지원하는 Courier New 글꼴 (Windows와 함께 제공됨)을 발견했습니다. "Windows 콘솔 및 트루 타입 글꼴"링크 (위)에서 레지스트리 해킹을 사용하면 Courier New을 콘솔에 사용할 수있는 글꼴로 추가 할 수 있습니다.

+0

또한 유니 코드를 지원하는 콘솔에 글꼴 세트가 있어야합니다. 기본 래스터 글꼴은 – Mgetz

+0

이 아닙니다. @Mgetz 네, 저는 그것을 추가하기 위해 제 대답을 편집하고있었습니다. 링크 된 질문에 대한 답변은 매우 훌륭하며이 문제를 해결하는 데 필요한 모든 세부 정보가 있습니다. –

+0

그래서 어떤 글꼴을 사용해야하며 어디서 구해야합니까? 나는 Windows 8을 실행하고있다. – JonnyBoats

관련 문제