"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo generar cadenas UTF-8 correctamente en `std::cout` en Windows?

¿Cómo generar cadenas UTF-8 correctamente en `std::cout` en Windows?

Publicado el 2024-11-12
Navegar:904

How to Output UTF-8 Strings Correctly to `std::cout` on Windows?

Manejo de cadenas UTF-8 en C en Windows

La codificación de cadenas como UTF-8 se usa ampliamente para aplicaciones multiplataforma. Sin embargo, enviar cadenas UTF-8 a std::cout en Windows presenta desafíos únicos.

El comportamiento predeterminado en Windows es que std::cout espere cadenas en formatos no Unicode. Cuando se presentan cadenas UTF-8, muestra caracteres corruptos.

Para solucionar este problema, hay dos pasos principales:

  1. Establecer la página de códigos de la consola en UTF-8 : Utilizando la función SetConsoleOutputCP, informe a la consola que el flujo de bytes entrante está codificado en UTF-8.
  2. Habilitar el almacenamiento en búfer de flujo: Deshabilite el comportamiento predeterminado de std::basic_filebuf en Visual Studio, que descompone secuencias de bytes UTF-8 y las pasa como bytes individuales. Para superar esto, setvbuf habilita el almacenamiento en búfer de la transmisión, lo que garantiza que toda la cadena pase como un todo.

Aquí hay un fragmento de código revisado que incorpora estas soluciones:

#include 
#include 
#include 
#include 

int main() {
    // Set console code page to UTF-8
    SetConsoleOutputCP(CP_UTF8);

    // Enable buffering to prevent byte-by-byte transmission
    setvbuf(stdout, nullptr, _IOFBF, 1000);

    // Output UTF-8 string
    std::string test = u8"Greek: αβγδ; German: Übergrößenträger";
    std::cout 

Además de estos pasos, tenga en cuenta que es posible que las fuentes rasterizadas en la consola de Windows no muestren correctamente caracteres Unicode que no sean ASCII. Para permitir una representación adecuada, se recomienda cambiar a una fuente TrueType, que ahora es la predeterminada en Windows 10 y versiones posteriores.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3