Привет всем. Столкнулся с неприятной проблемой, требуется помощь тех, кто работал с SFML и С++.
Я работаю над одним проектом с помощью SFML на C++ в CLion на Windows 11 через компилятор MSCV.
По каким-то причинам я не в состоянии вывести кириллицу.
На скриншоте вы можете наблюдать как я создаю объект класса sf::Text в конструктор которого я передаю текст написанный на кириллице.
На втором скриншоте мы можете наблюдать то как SFML отрисовывает этот текст.
К сожалению такая проблема не только с SFML, а в целом. Я выводил "Текст" в stdout и в CLion и в Visual Studio, но результат все разочаровавший; вы можете наблюдать результаты также на соответсвующих скринах.
Мне нужна помощь! Я хочу, чтобы кто-то дал мне решение решить проблему с выводом не ASCII символов. Буду благодарен!
Я работаю над одним проектом с помощью SFML на C++ в CLion на Windows 11 через компилятор MSCV.
По каким-то причинам я не в состоянии вывести кириллицу.
На скриншоте вы можете наблюдать как я создаю объект класса sf::Text в конструктор которого я передаю текст написанный на кириллице.
На втором скриншоте мы можете наблюдать то как SFML отрисовывает этот текст.
К сожалению такая проблема не только с SFML, а в целом. Я выводил "Текст" в stdout и в CLion и в Visual Studio, но результат все разочаровавший; вы можете наблюдать результаты также на соответсвующих скринах.
Мне нужна помощь! Я хочу, чтобы кто-то дал мне решение решить проблему с выводом не ASCII символов. Буду благодарен!
>>4015 (OP)
это консоль виндовая, гугли как в ней кодепейж поменять, или через винапи конвертируй юникод в кодировки виндовс как петух
это консоль виндовая, гугли как в ней кодепейж поменять, или через винапи конвертируй юникод в кодировки виндовс как петух
>>4015 (OP)
Deepseek
Проблема с выводом кириллицы в C++ (особенно в Windows) — распространённая ситуация, и её можно решить несколькими способами. Вот основные причины и решения:
---
### 1. Кодировка исходного файла
Убедитесь, что ваш файл `.cpp` сохранён в правильной кодировке (например, UTF-8 с BOM или CP1251).
В CLion:
→ File → Settings → Editor → File Encodings
→ Установите кодировку для проекта и текущего файла в UTF-8 (или Windows-1251, если нужно).
→ Пересохраните файл.
---
### 2. Настройка локали в C++
Добавьте в начале `main()` вызов `setlocale` или `std::setlocale`:
```cpp
#include <clocale>
int main() {
setlocale(LC_ALL, "ru_RU.UTF-8"); // Для Linux/Mac
// Или для Windows:
setlocale(LC_ALL, "Russian");
// Альтернатива:
std::setlocale(LC_ALL, ""); // Автоматически выбирает системную локаль
...
}
```
---
### 3. Для SFML: шрифт и кодировка текста
SFML требует:
1) Правильный шрифт, поддерживающий кириллицу (например, `Arial`, `Times New Roman` или любой `.ttf` с русскими символами).
2) Корректную передачу строки в `sf::Text`.
#### Пример:
```cpp
#include <SFML/Graphics.hpp>
int main() {
setlocale(LC_ALL, "Russian");
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Кириллица");
// Загружаем шрифт (убедитесь, что файл существует!)
sf::Font font;
if (!font.loadFromFile("arial.ttf")) {
// Обработка ошибки
return 1;
}
// Создаём текст (кириллица в UTF-8)
sf::Text text("Привет, SFML!", font, 30);
text.setPosition(100, 100);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(text);
window.display();
}
return 0;
}
```
#### Важно:
- Шрифт должен поддерживать кириллицу. Проверьте его в системе или загрузите `.ttf` в папку с проектом.
- Если строка жёстко закодирована в `.cpp`, убедитесь, что файл сохранён в UTF-8.
---
### 4. Для консоли (std::cout)
В Windows консоль по умолчанию использует кодировку CP866 (или CP1251), а не UTF-8.
Решение:
1) Изменить кодировку консоли программно:
```cpp
#include <windows.h>
int main() {
SetConsoleOutputCP(CP_UTF8); // Переключаем консоль в UTF-8
SetConsoleCP(CP_UTF8);
std::cout << "Привет, мир!\n"; // Теперь кириллица должна работать
return 0;
}
```
2) Или сохранить файл в CP1251 и не менять кодировку консоли.
---
### 5. Настройка CLion
Если вывод в **Run/Debug** CLion некорректный:
→ Попробуйте добавить в настройки запуска (`Edit Configurations`) переменную среды:
```
JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF-8
```
→ Или изменить кодировку в самом CLion (как в п. 1).
---
### **6. Альтернатива: использование широких строк (wchar_t)**
Если ничего не помогает, можно попробовать `std::wstring` и `sf::Text::setString` с широкими символами:
```cpp
#include <SFML/Graphics.hpp>
#include <locale>
int main() {
std::locale::global(std::locale("Russian"));
sf::Text text;
text.setFont(font);
text.setString(L"Привет, SFML!"); // Обратите внимание на 'L' перед строкой
// ...
}
```
---
### **Итог:**
1. Проверьте кодировку файла `.cpp` (лучше **UTF-8**).
2. Добавьте `setlocale` или `SetConsoleOutputCP`.
3. Убедитесь, что шрифт в SFML поддерживает кириллицу.
4. Если проблема в консоли — настройте кодировку вывода.
Если остались вопросы — уточните, где именно возникает проблема (SFML, консоль, IDE), и приведите пример кода.
Deepseek
Проблема с выводом кириллицы в C++ (особенно в Windows) — распространённая ситуация, и её можно решить несколькими способами. Вот основные причины и решения:
---
### 1. Кодировка исходного файла
Убедитесь, что ваш файл `.cpp` сохранён в правильной кодировке (например, UTF-8 с BOM или CP1251).
В CLion:
→ File → Settings → Editor → File Encodings
→ Установите кодировку для проекта и текущего файла в UTF-8 (или Windows-1251, если нужно).
→ Пересохраните файл.
---
### 2. Настройка локали в C++
Добавьте в начале `main()` вызов `setlocale` или `std::setlocale`:
```cpp
#include <clocale>
int main() {
setlocale(LC_ALL, "ru_RU.UTF-8"); // Для Linux/Mac
// Или для Windows:
setlocale(LC_ALL, "Russian");
// Альтернатива:
std::setlocale(LC_ALL, ""); // Автоматически выбирает системную локаль
...
}
```
---
### 3. Для SFML: шрифт и кодировка текста
SFML требует:
1) Правильный шрифт, поддерживающий кириллицу (например, `Arial`, `Times New Roman` или любой `.ttf` с русскими символами).
2) Корректную передачу строки в `sf::Text`.
#### Пример:
```cpp
#include <SFML/Graphics.hpp>
int main() {
setlocale(LC_ALL, "Russian");
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Кириллица");
// Загружаем шрифт (убедитесь, что файл существует!)
sf::Font font;
if (!font.loadFromFile("arial.ttf")) {
// Обработка ошибки
return 1;
}
// Создаём текст (кириллица в UTF-8)
sf::Text text("Привет, SFML!", font, 30);
text.setPosition(100, 100);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(text);
window.display();
}
return 0;
}
```
#### Важно:
- Шрифт должен поддерживать кириллицу. Проверьте его в системе или загрузите `.ttf` в папку с проектом.
- Если строка жёстко закодирована в `.cpp`, убедитесь, что файл сохранён в UTF-8.
---
### 4. Для консоли (std::cout)
В Windows консоль по умолчанию использует кодировку CP866 (или CP1251), а не UTF-8.
Решение:
1) Изменить кодировку консоли программно:
```cpp
#include <windows.h>
int main() {
SetConsoleOutputCP(CP_UTF8); // Переключаем консоль в UTF-8
SetConsoleCP(CP_UTF8);
std::cout << "Привет, мир!\n"; // Теперь кириллица должна работать
return 0;
}
```
2) Или сохранить файл в CP1251 и не менять кодировку консоли.
---
### 5. Настройка CLion
Если вывод в **Run/Debug** CLion некорректный:
→ Попробуйте добавить в настройки запуска (`Edit Configurations`) переменную среды:
```
JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF-8
```
→ Или изменить кодировку в самом CLion (как в п. 1).
---
### **6. Альтернатива: использование широких строк (wchar_t)**
Если ничего не помогает, можно попробовать `std::wstring` и `sf::Text::setString` с широкими символами:
```cpp
#include <SFML/Graphics.hpp>
#include <locale>
int main() {
std::locale::global(std::locale("Russian"));
sf::Text text;
text.setFont(font);
text.setString(L"Привет, SFML!"); // Обратите внимание на 'L' перед строкой
// ...
}
```
---
### **Итог:**
1. Проверьте кодировку файла `.cpp` (лучше **UTF-8**).
2. Добавьте `setlocale` или `SetConsoleOutputCP`.
3. Убедитесь, что шрифт в SFML поддерживает кириллицу.
4. Если проблема в консоли — настройте кодировку вывода.
Если остались вопросы — уточните, где именно возникает проблема (SFML, консоль, IDE), и приведите пример кода.
>>4015 (OP)
Deepseek
Проблема с выводом кириллицы в C++ (особенно в Windows) — распространённая ситуация, и её можно решить несколькими способами. Вот основные причины и решения:
---
### 1. Кодировка исходного файла
Убедитесь, что ваш файл `.cpp` сохранён в правильной кодировке (например, UTF-8 с BOM или CP1251).
В CLion:
→ File → Settings → Editor → File Encodings
→ Установите кодировку для проекта и текущего файла в UTF-8 (или Windows-1251, если нужно).
→ Пересохраните файл.
---
### 2. Настройка локали в C++
Добавьте в начале `main()` вызов `setlocale` или `std::setlocale`:
```cpp
#include <clocale>
int main() {
setlocale(LC_ALL, "ru_RU.UTF-8"); // Для Linux/Mac
// Или для Windows:
setlocale(LC_ALL, "Russian");
// Альтернатива:
std::setlocale(LC_ALL, ""); // Автоматически выбирает системную локаль
...
}
```
---
### 3. Для SFML: шрифт и кодировка текста
SFML требует:
1) Правильный шрифт, поддерживающий кириллицу (например, `Arial`, `Times New Roman` или любой `.ttf` с русскими символами).
2) Корректную передачу строки в `sf::Text`.
#### Пример:
```cpp
#include <SFML/Graphics.hpp>
int main() {
setlocale(LC_ALL, "Russian");
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Кириллица");
// Загружаем шрифт (убедитесь, что файл существует!)
sf::Font font;
if (!font.loadFromFile("arial.ttf")) {
// Обработка ошибки
return 1;
}
// Создаём текст (кириллица в UTF-8)
sf::Text text("Привет, SFML!", font, 30);
text.setPosition(100, 100);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(text);
window.display();
}
return 0;
}
```
#### Важно:
- Шрифт должен поддерживать кириллицу. Проверьте его в системе или загрузите `.ttf` в папку с проектом.
- Если строка жёстко закодирована в `.cpp`, убедитесь, что файл сохранён в UTF-8.
---
### 4. Для консоли (std::cout)
В Windows консоль по умолчанию использует кодировку CP866 (или CP1251), а не UTF-8.
Решение:
1) Изменить кодировку консоли программно:
```cpp
#include <windows.h>
int main() {
SetConsoleOutputCP(CP_UTF8); // Переключаем консоль в UTF-8
SetConsoleCP(CP_UTF8);
std::cout << "Привет, мир!\n"; // Теперь кириллица должна работать
return 0;
}
```
2) Или сохранить файл в CP1251 и не менять кодировку консоли.
---
### 5. Настройка CLion
Если вывод в **Run/Debug** CLion некорректный:
→ Попробуйте добавить в настройки запуска (`Edit Configurations`) переменную среды:
```
JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF-8
```
→ Или изменить кодировку в самом CLion (как в п. 1).
---
### **6. Альтернатива: использование широких строк (wchar_t)**
Если ничего не помогает, можно попробовать `std::wstring` и `sf::Text::setString` с широкими символами:
```cpp
#include <SFML/Graphics.hpp>
#include <locale>
int main() {
std::locale::global(std::locale("Russian"));
sf::Text text;
text.setFont(font);
text.setString(L"Привет, SFML!"); // Обратите внимание на 'L' перед строкой
// ...
}
```
---
### **Итог:**
1. Проверьте кодировку файла `.cpp` (лучше **UTF-8**).
2. Добавьте `setlocale` или `SetConsoleOutputCP`.
3. Убедитесь, что шрифт в SFML поддерживает кириллицу.
4. Если проблема в консоли — настройте кодировку вывода.
Если остались вопросы — уточните, где именно возникает проблема (SFML, консоль, IDE), и приведите пример кода.
Deepseek
Проблема с выводом кириллицы в C++ (особенно в Windows) — распространённая ситуация, и её можно решить несколькими способами. Вот основные причины и решения:
---
### 1. Кодировка исходного файла
Убедитесь, что ваш файл `.cpp` сохранён в правильной кодировке (например, UTF-8 с BOM или CP1251).
В CLion:
→ File → Settings → Editor → File Encodings
→ Установите кодировку для проекта и текущего файла в UTF-8 (или Windows-1251, если нужно).
→ Пересохраните файл.
---
### 2. Настройка локали в C++
Добавьте в начале `main()` вызов `setlocale` или `std::setlocale`:
```cpp
#include <clocale>
int main() {
setlocale(LC_ALL, "ru_RU.UTF-8"); // Для Linux/Mac
// Или для Windows:
setlocale(LC_ALL, "Russian");
// Альтернатива:
std::setlocale(LC_ALL, ""); // Автоматически выбирает системную локаль
...
}
```
---
### 3. Для SFML: шрифт и кодировка текста
SFML требует:
1) Правильный шрифт, поддерживающий кириллицу (например, `Arial`, `Times New Roman` или любой `.ttf` с русскими символами).
2) Корректную передачу строки в `sf::Text`.
#### Пример:
```cpp
#include <SFML/Graphics.hpp>
int main() {
setlocale(LC_ALL, "Russian");
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Кириллица");
// Загружаем шрифт (убедитесь, что файл существует!)
sf::Font font;
if (!font.loadFromFile("arial.ttf")) {
// Обработка ошибки
return 1;
}
// Создаём текст (кириллица в UTF-8)
sf::Text text("Привет, SFML!", font, 30);
text.setPosition(100, 100);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(text);
window.display();
}
return 0;
}
```
#### Важно:
- Шрифт должен поддерживать кириллицу. Проверьте его в системе или загрузите `.ttf` в папку с проектом.
- Если строка жёстко закодирована в `.cpp`, убедитесь, что файл сохранён в UTF-8.
---
### 4. Для консоли (std::cout)
В Windows консоль по умолчанию использует кодировку CP866 (или CP1251), а не UTF-8.
Решение:
1) Изменить кодировку консоли программно:
```cpp
#include <windows.h>
int main() {
SetConsoleOutputCP(CP_UTF8); // Переключаем консоль в UTF-8
SetConsoleCP(CP_UTF8);
std::cout << "Привет, мир!\n"; // Теперь кириллица должна работать
return 0;
}
```
2) Или сохранить файл в CP1251 и не менять кодировку консоли.
---
### 5. Настройка CLion
Если вывод в **Run/Debug** CLion некорректный:
→ Попробуйте добавить в настройки запуска (`Edit Configurations`) переменную среды:
```
JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF-8
```
→ Или изменить кодировку в самом CLion (как в п. 1).
---
### **6. Альтернатива: использование широких строк (wchar_t)**
Если ничего не помогает, можно попробовать `std::wstring` и `sf::Text::setString` с широкими символами:
```cpp
#include <SFML/Graphics.hpp>
#include <locale>
int main() {
std::locale::global(std::locale("Russian"));
sf::Text text;
text.setFont(font);
text.setString(L"Привет, SFML!"); // Обратите внимание на 'L' перед строкой
// ...
}
```
---
### **Итог:**
1. Проверьте кодировку файла `.cpp` (лучше **UTF-8**).
2. Добавьте `setlocale` или `SetConsoleOutputCP`.
3. Убедитесь, что шрифт в SFML поддерживает кириллицу.
4. Если проблема в консоли — настройте кодировку вывода.
Если остались вопросы — уточните, где именно возникает проблема (SFML, консоль, IDE), и приведите пример кода.
>>4470
Ни один из методов не помог
Ни один из методов не помог
>>4305
оно помогает выводить в терминал, но никак не с SFML
оно помогает выводить в терминал, но никак не с SFML
>>4015 (OP)
1. Ты делаешь что-то не так. Условный хелло-ворлд (демонстрация вывода текста) с офф-сайта (по крайне мере для версий 2.6) выводит кириллицу без проблем. Сотри, начни заново всё переустановив.
Вряд ли разница в том, что у меня mingw, и какая-то хрень именно при компиляторе msvc возникает.
stb_truetype потыкай.
И зависимости от sfml не будет, заработает и в месте, где не будет sfml.
1. Ты делаешь что-то не так. Условный хелло-ворлд (демонстрация вывода текста) с офф-сайта (по крайне мере для версий 2.6) выводит кириллицу без проблем. Сотри, начни заново всё переустановив.
Вряд ли разница в том, что у меня mingw, и какая-то хрень именно при компиляторе msvc возникает.
stb_truetype потыкай.
И зависимости от sfml не будет, заработает и в месте, где не будет sfml.

>>4015 (OP)
Вот. Собрал на sfml 3.0
К слову он у тебя и есть, судя по тому, что в конструкторе sf::text ты указываешь сначала шрифт. В 2.6 вроде бы было наоборот, текст до шрифта.
К слову, я недели две назад в конфочках кидал сообщение, цитирую исходное сообщение:
нет желающих поделать образовательный проект-игру на c++/sfml/opengl, на несколько десятков часов? Просто пальцы и извилины размять, получить +0.6 к навыкам. Образовательный момент заключается в создании несложной игры. Игры - очень хорошая область, где и физика, и математика, и логика поведения и принятия решений - и почти все области программирования есть как применить.
Нет задачи получить игру, есть задача повелосипедировать.
Не интересует?
Пока из результатов особо никто не откликнулся, я вот собрал оболочку уровня что ты видишь (посложнее, но на 2.6, сейчас переписываю на 3.0, там ещё всякие события потери фокуса окна и реакция на alt+enter есть), и ещё поставил раст (один из предложил на расте это делать), прослушал лекций на 6 часов и мне очень понравилось то что я услышал; и покликал в коде раста - но очень не понравились компилято- и установка-проблемы сильнее чем в си, 20 часов до первого openGL-треугольника потратил, и при этом это был opengl новый, а легаси opengl в режиме совместимости (что очевидно удобнее для проекта на пару десятков часов) я так и не смог запустить на расте.
Вот. Собрал на sfml 3.0
К слову он у тебя и есть, судя по тому, что в конструкторе sf::text ты указываешь сначала шрифт. В 2.6 вроде бы было наоборот, текст до шрифта.
К слову, я недели две назад в конфочках кидал сообщение, цитирую исходное сообщение:
нет желающих поделать образовательный проект-игру на c++/sfml/opengl, на несколько десятков часов? Просто пальцы и извилины размять, получить +0.6 к навыкам. Образовательный момент заключается в создании несложной игры. Игры - очень хорошая область, где и физика, и математика, и логика поведения и принятия решений - и почти все области программирования есть как применить.
Нет задачи получить игру, есть задача повелосипедировать.
Не интересует?
Пока из результатов особо никто не откликнулся, я вот собрал оболочку уровня что ты видишь (посложнее, но на 2.6, сейчас переписываю на 3.0, там ещё всякие события потери фокуса окна и реакция на alt+enter есть), и ещё поставил раст (один из предложил на расте это делать), прослушал лекций на 6 часов и мне очень понравилось то что я услышал; и покликал в коде раста - но очень не понравились компилято- и установка-проблемы сильнее чем в си, 20 часов до первого openGL-треугольника потратил, и при этом это был opengl новый, а легаси opengl в режиме совместимости (что очевидно удобнее для проекта на пару десятков часов) я так и не смог запустить на расте.

>>5772
Я использую SFML 3.0.0.
И я попробовал такой код с С++17, но я получил не совсем то, что хотел.
На С++20 или С++23 текст такой-же как в первых моих скринах
Я использую SFML 3.0.0.
И я попробовал такой код с С++17, но я получил не совсем то, что хотел.
На С++20 или С++23 текст такой-же как в первых моих скринах

>>5806
Еще я пробовал вот такой код, который посоветовали на форуме SFML; бесполезно
Еще я пробовал вот такой код, который посоветовали на форуме SFML; бесполезно
>>5806>>5807
Попробуй мой код запусти. https://pastebin.com/q3y6w72t
В Cmake SFML::Graphics SFML::System SFML::Network SFML::Window glew32.lib + openGL либы - не знаю как в визуалстудии оно указывается.
Попробуй мой код запусти. https://pastebin.com/q3y6w72t
В Cmake SFML::Graphics SFML::System SFML::Network SFML::Window glew32.lib + openGL либы - не знаю как в визуалстудии оно указывается.
>>5811
Ну, шрифт только поменяй на тот, что у тебя есть. И шрифт попробуй перекачай, вдруг у тебя битый файл.
Ну, шрифт только поменяй на тот, что у тебя есть. И шрифт попробуй перекачай, вдруг у тебя битый файл.

>>5811
бесполезно
бесполезно
>>5817
Свой код можешь скинуть, вырезав всё кроме текста? Я запущу у себя. Если работает, то значит либо компиляторопроблемы, либо билд sfml у тебя битый (я точно знаю, что он и раньше отлично кириллицу выводил), либо какая-то особенность win11 лютая, я не знаю, нет идей.
Свой код можешь скинуть, вырезав всё кроме текста? Я запущу у себя. Если работает, то значит либо компиляторопроблемы, либо билд sfml у тебя битый (я точно знаю, что он и раньше отлично кириллицу выводил), либо какая-то особенность win11 лютая, я не знаю, нет идей.
>>5823
Моя гипотеза в том, что у тебя строка вида L"" раскрываться в другой набор байт, нежели у меня, и это какая-то особенность msvc. С u8 у меня не работает, результат как и у тебя.
Предлагаю как на втором скрине (https://pastebin.com/PeQHbv55) вывести последовательность байт и сравнить с моей. Если последовательность совпадает (до нулей) - проблема 100% не в коде. Ну и 40 поменяй на что-то, в дебаге у тебя это возможно упадёт, если компилятор следит за выходом за пределы массива.
Моя гипотеза в том, что у тебя строка вида L"" раскрываться в другой набор байт, нежели у меня, и это какая-то особенность msvc. С u8 у меня не работает, результат как и у тебя.
Предлагаю как на втором скрине (https://pastebin.com/PeQHbv55) вывести последовательность байт и сравнить с моей. Если последовательность совпадает (до нулей) - проблема 100% не в коде. Ну и 40 поменяй на что-то, в дебаге у тебя это возможно упадёт, если компилятор следит за выходом за пределы массива.
>>5844
-48, 0, -94, 0, -48, 0, -75, 0, -48, 0, -70, 0, -47, 0, -127, 0, -47, 0, 26, 32, 32, 0, 32, 0, 122, 0, 90, 0, 97, 0, 65,
0, -47, 0, -113, 0, -48, 0, -81, 0,
-48, 0, -94, 0, -48, 0, -75, 0, -48, 0, -70, 0, -47, 0, -127, 0, -47, 0, 26, 32, 32, 0, 32, 0, 122, 0, 90, 0, 97, 0, 65,
0, -47, 0, -113, 0, -48, 0, -81, 0,

>>5841
То есть видишь у тебя в заголовке окна другие иероглифы. А там без L"" две строки одинаковые. Так не должно быть по идее.
>>5845
Другое. Ясненько. Какое-то windows-1251 будто бы.
Может быть тебе сам файл исходников в utf-8 сохранить, а он сейчас у тебя в другой кодировке? IAR например разное выдаёт в зависимости от кодировки файла исходников. У меня просто все файлы в utf-8 и я об этом не думаю.
То есть может быть такое, что мы на экране буквально одно и тоже видим, но если мы в бинарном виде откроем файлы, то у них будет разное содержимое, и ты когда вставляешь в свою IDE оно на лету кодировку меняет. А компилятор видит разные файлы и выдаёт разный результат.
То есть видишь у тебя в заголовке окна другие иероглифы. А там без L"" две строки одинаковые. Так не должно быть по идее.
>>5845
Другое. Ясненько. Какое-то windows-1251 будто бы.
Может быть тебе сам файл исходников в utf-8 сохранить, а он сейчас у тебя в другой кодировке? IAR например разное выдаёт в зависимости от кодировки файла исходников. У меня просто все файлы в utf-8 и я об этом не думаю.
То есть может быть такое, что мы на экране буквально одно и тоже видим, но если мы в бинарном виде откроем файлы, то у них будет разное содержимое, и ты когда вставляешь в свою IDE оно на лету кодировку меняет. А компилятор видит разные файлы и выдаёт разный результат.
>>5850
Попробуй в sf::text в конструкторе укажи текст L"аАёЁяЯaAzZ"
Попробуй возьми мой массив (это uint8_t) 48,4,16,4,81,4,1,4,79,4,47,4,97,0,65,0,122,0,90,0,0,0,0 ... и отрендери его, приведя его в const wchar_t* или что у тебя там передаётся в sf::text. Если заработает, тебе нужно будет все функции оборачивать в функцию преобразования кодировки, лол.
Ещё точно не ок, что у тебя заголовок окна другой.
Попробуй в sf::text в конструкторе укажи текст L"аАёЁяЯaAzZ"
Попробуй возьми мой массив (это uint8_t) 48,4,16,4,81,4,1,4,79,4,47,4,97,0,65,0,122,0,90,0,0,0,0 ... и отрендери его, приведя его в const wchar_t* или что у тебя там передаётся в sf::text. Если заработает, тебе нужно будет все функции оборачивать в функцию преобразования кодировки, лол.
Ещё точно не ок, что у тебя заголовок окна другой.

>>5883
Ну вот всё, совсем не сложно. Ну дальше там какой-нибудь constexpr-преобразователь для строк в юникод напишешь и все строки через него будешь кидать.
Или нужно всё-таки разобраться, какой литерал для utf-8 строк в msvc. Вот нейронка что-то про флаг /utf-8 пишет, проверить не могу, не имею msvc.
Ну вот всё, совсем не сложно. Ну дальше там какой-нибудь constexpr-преобразователь для строк в юникод напишешь и все строки через него будешь кидать.
Или нужно всё-таки разобраться, какой литерал для utf-8 строк в msvc. Вот нейронка что-то про флаг /utf-8 пишет, проверить не могу, не имею msvc.
>>5859
Использовав твои uint8_t оно вывело кириллицу без проблем.
Теперь я нихрена не пойму почему у меня неправильно кодируется текст
Использовав твои uint8_t оно вывело кириллицу без проблем.
Теперь я нихрена не пойму почему у меня неправильно кодируется текст

>>5891
Не. Не робит. Я положил кириллицу, кастовал в int8_t или uint8_t, извлек числа, вставил в массив, пытался реинтерпретировать
Не. Не робит. Я положил кириллицу, кастовал в int8_t или uint8_t, извлек числа, вставил в массив, пытался реинтерпретировать

>>5916
так тоже не работает
так тоже не работает
>>5892
Проблема почти точно какая-то супер тупая, не люблю такие.
Если есть желание разобраться - я бы попробовал пересоздать проект, добавить несколько строк сразу со всеми способами u8"", L"", простой "", какие-то wstring wchar* = "" и так далее.
После этого перед компиляцией без IDE явно через notepad++ открыть файл и преобразовать в кодировки utf-8 (и с bom и без него), utf-16, windows-1251 и так далее сколько есть вариантов разумных, и скомпилировать из командной строки вызвав cmake вручную в нужной папке. С твоего позволения, сам я этим заниматься не буду, да и msvc у меня нет.
А, ну ты уже сделал.
Я кстати так и не понял, что у тебя за числа -48, 0, -94, 0, -48, 0, -75, 0, -48, 0, это какой-то utf-16 будто бы, но и не он, и нули какие-то лишние. Или оно вообще берёт код из windows-1251 (0..255), и пишет его, а потом ноль.
>>5916
А вот тут уже setlocale или что там в с++ варианте с новой стандартной библиотекой. Наверное какой-нибудь std::setlocale(LC_ALL, "ru_RU.UTF-8") первой строкой в main.
Проблема почти точно какая-то супер тупая, не люблю такие.
Если есть желание разобраться - я бы попробовал пересоздать проект, добавить несколько строк сразу со всеми способами u8"", L"", простой "", какие-то wstring wchar* = "" и так далее.
После этого перед компиляцией без IDE явно через notepad++ открыть файл и преобразовать в кодировки utf-8 (и с bom и без него), utf-16, windows-1251 и так далее сколько есть вариантов разумных, и скомпилировать из командной строки вызвав cmake вручную в нужной папке. С твоего позволения, сам я этим заниматься не буду, да и msvc у меня нет.
А, ну ты уже сделал.
Я кстати так и не понял, что у тебя за числа -48, 0, -94, 0, -48, 0, -75, 0, -48, 0, это какой-то utf-16 будто бы, но и не он, и нули какие-то лишние. Или оно вообще берёт код из windows-1251 (0..255), и пишет его, а потом ноль.
>>5916
А вот тут уже setlocale или что там в с++ варианте с новой стандартной библиотекой. Наверное какой-нибудь std::setlocale(LC_ALL, "ru_RU.UTF-8") первой строкой в main.