/Zc:u8EscapeEncoding (codifica della sequenza di escape numerica in stringhe u8)

Mantieni il valore delle sequenze di escape numeriche nei u8 valori letterali di stringa senza codificarle come UTF-8.

Usare questa opzione per aumentare la compatibilità tra sistemi o quando un carattere non UTF-8 è incorporato in un letterale di stringa UTF-8.

Syntax

/Zc:u8EscapeEncoding[-]

Remarks

In C++, u8 i valori letterali stringa sono sequenze con codifica utf-8 di char8_t. Questo flag modifica il modo in cui le sequenze di escape numeriche vengono interpretate nei u8 valori letterali stringa. Il comportamento con /Zc:u8EscapeEncoding consiste nel codificarli nella stringa come un singolo valore char8_t a 8 bit. Il comportamento in /Zc:u8EscapeEncoding- consiste nell'interpretare il valore come punto di codice Unicode. Quando il valore è un punto di codice superiore in Unicode, viene codificato come carattere multibyte. Il comportamento delle sequenze di caratteri universali è sempre quello di codificarli come utf-8 indipendentemente da /Zc:u8EscapeEncoding[-].

L'esempio seguente contiene sia una sequenza di escape esadecimale \x che una sequenza di escape universale \u. /Zc:u8EscapeEncoding[-] influisce sulla codifica della sequenza di escape esadecimale, ma la sequenza di escape universale viene sempre codificata come utf-8. La stringa di esempio include anche il carattere spazio, codificato come 0x20 in utf-8.

#include <cstdio>
int main()
{
    const char8_t str[] = u8" \x00ff \u00ff ";
    for(char8_t c : str) {
        printf("0x%X ", c);
    }
    return 0;
}

Con /Zc:u8EscapeEncoding, la sequenza di escape \x00ff viene codificata come 0xFF e la sequenza di caratteri universale \u00ff viene codificata come la sequenza utf-8 0xC3 0xBF. L'esempio di codice restituisce:

0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0

In /Zc:u8EscapeEncoding-i valori di \x00ff e \u00ff vengono codificati nuovamente come sequenza 0xC3 0xBFutf-8 . L'esempio di codice restituisce:

0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0

Vedere anche

/Zc (conformità)