47 lines
1.4 KiB
Markdown
47 lines
1.4 KiB
Markdown
|
---
|
|||
|
title: "UTF-8 и MinGW"
|
|||
|
categories: ["cpp", "archive"]
|
|||
|
date: 2015-12-03T00:00:00+03:00
|
|||
|
draft: false
|
|||
|
featured_image: miniature.jpg
|
|||
|
---
|
|||
|
|
|||
|
|
|||
|
Наверное, любой сталкивался с проблемой русских букв в консоли. И каждый придумывал свои костыли. Вот и я свой придумал.
|
|||
|
|
|||
|
<!--more-->
|
|||
|
|
|||
|
Имеем мы все файлы в кодировке **UTF-8**. А для нормального вывода в консоль Windows нужны исходники в кодировке 1252. Конвертировать?
|
|||
|
|
|||
|
Зачем? Ведь компилятор это умеет.
|
|||
|
|
|||
|
Так что кормим компилятору вот такие параметры:
|
|||
|
|
|||
|
```cmd
|
|||
|
-finput-charset=utf-8 -fexec-charset=cp1252
|
|||
|
```
|
|||
|
|
|||
|
А вывод должен иметь следующий вид:
|
|||
|
|
|||
|
```c
|
|||
|
wprintf(L"Да это же русские буквы =О");
|
|||
|
```
|
|||
|
|
|||
|
Нужно не забывать добавлять **L** до строки, а также вызвать **setlocale**.
|
|||
|
|
|||
|
Пример:
|
|||
|
|
|||
|
```c
|
|||
|
#include <stdio.h>
|
|||
|
#include <locale.h>
|
|||
|
|
|||
|
int main() {
|
|||
|
setlocale(LC_ALL, "");
|
|||
|
wprintf(L"Да это же русские буквы =О\n\n");
|
|||
|
wprintf(L"Нажмите [Enter] для продолжения...");
|
|||
|
getchar();
|
|||
|
return 0;
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
![result](m_2015-12-03_181957.png "Результат")
|