2013-07-07 2 views
4

У меня есть следующие программы:printfn не производит ожидаемых результатов для международных (не латинских символов)

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

Значение TXT создается для некоторых арабских символов. Когда я запускаю программу, то, что отображается на консоли, является кучей вопросительных знаков, а не символов. В отладчике 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 и шрифты TrueType» (см. Выше), вы должны добавить Courier New в качестве шрифта, который вы можете использовать в консоли.

+0

вам также необходимо установить шрифт на консоли, поддерживающей unicode, по умолчанию растровый шрифт не – Mgetz

+0

@Mgetz Yep, я просто редактировал свой ответ, чтобы добавить это. Ответ на вопрос, который я связал, очень хорош и содержит все детали, необходимые для решения этой проблемы. –

+0

Итак, какой шрифт я должен использовать и где его взять? Я запускаю Windows 8. – JonnyBoats

Смежные вопросы