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 "Результат") |