Aracılığıyla paylaş


Konsol Uygulaması Sorunları

8 bit konsol işlevleri OEM kod sayfasını kullanır. Diğer tüm işlevler varsayılan olarak ANSI kod sayfasını kullanır. Bu, konsol işlevleri tarafından döndürülen dizelerin diğer işlevler tarafından doğru işlenmeyebileceği ve tersi anlamına gelir. Örneğin, FindFirstFileA belirli genişletilmiş ANSI karakterlerini içeren bir dize döndürürse, WriteConsoleA dizeyi düzgün görüntülemez.

Konsol uygulaması için en iyi uzun vadeli çözüm Unicode kullanmaktır. Konsol, UTF-8 kod sayfası için SetConsoleCP ve SetConsoleOutputCP65001 kullandıktan sonra API'lerin W değişkeninde UTF-16 kodlamasını veya API'lerin A değişkeninde UTF-8 kodlamasını kabulCP_UTF8 eder.

Bu çözümü engelleyen bir konsol uygulaması SetFileApisToOEM işlevini kullanmalıdır. Bu işlev, ANSI karakter kümesi dizeleri yerine OEM karakter kümesi dizeleri oluşturacak şekilde ilgili dosya işlevlerini değiştirir.

Dosya işlevleri şunlardır:

Komut satırlarıyla ilgilenirken, bir konsol uygulamasının ilgili karakterden OEM'ye işlevlerini kullanarak komut satırını Unicode biçiminde alması ve OEM formuna dönüştürmesi gerekir. Argv'nin ANSI karakter kümesini kullandığını da unutmayın.