Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Mantener el valor de las secuencias de escape numéricas en los literales de cadena u8 sin codificarlas en UTF-8.
Utilice esta opción para aumentar la compatibilidad entre plataformas o cuando se incruste un carácter que no sea UTF-8 en un literal de cadena UTF-8.
Syntax
/Zc:u8EscapeEncoding[-]
Remarks
En C++, u8 literales de cadena son secuencias de char8_t codificadas en UTF-8. Este indicador cambia la forma en que se interpretan las secuencias de escape numéricas en los literales de cadena u8. El comportamiento con /Zc:u8EscapeEncoding consiste en codificarlos en la cadena como un único valor de 8 bits char8_t. El comportamiento con /Zc:u8EscapeEncoding- consiste en interpretar el valor como un punto de código Unicode. Cuando el valor es un punto de código superior en Unicode, se codifica como un carácter multibyte. El comportamiento de las secuencias de caracteres universales siempre es codificarlos como utf-8 independientemente de /Zc:u8EscapeEncoding[-].
El ejemplo siguiente contiene una secuencia de escape hexadecimal \x y una secuencia de escape universal \u.
/Zc:u8EscapeEncoding[-] afecta a la codificación de la secuencia de escape hexadecimal, pero la secuencia de escape universal siempre se codifica como utf-8. La cadena de ejemplo también incluye el carácter de espacio, que se codifica como 0x20 en utf-8.
#include <cstdio>
int main()
{
const char8_t str[] = u8" \x00ff \u00ff ";
for(char8_t c : str) {
printf("0x%X ", c);
}
return 0;
}
En /Zc:u8EscapeEncoding, la secuencia de escape \x00ff se codifica como 0xFF y la secuencia de caracteres universales \u00ff se codifica como la secuencia UTF-8 0xC3 0xBF. El ejemplo de código genera lo siguiente:
0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0
En /Zc:u8EscapeEncoding-, los valores de tanto \x00ff como \u00ff se recodifican como la secuencia UTF-8 0xC3 0xBF. El ejemplo de código genera lo siguiente:
0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0