Pregunta

Si un archivo contiene un & # 163; El signo (libra) y luego directory_iterator devuelve correctamente la secuencia de caracteres utf8 \ xC2 \ xA3

wdirectory_iterator usa caracteres anchos, pero sigue devolviendo la secuencia utf8. ¿Es este el comportamiento correcto para wdirectory_iterator o lo estoy utilizando incorrectamente?

AddFile(testpath, "pound£sign"); 
wdirectory_iterator iter(testpath);
TS_ASSERT_EQUALS(iter->leaf(),L"pound\xC2\xA3sign"); // Succeeds
TS_ASSERT_EQUALS(*iter, L"pound£sign"); // Fails
¿Fue útil?

Solución

La codificación para caracteres anchos (objetos wchar_t ) depende de la implementación. Para que funcione la segunda instrucción (es decir, L '' libra £ signo ''), probablemente deba cambiar la configuración regional subyacente. El valor predeterminado es " C " que no sabe sobre el carácter de la libra. El valor hexadecimal tiene éxito ya que esto no requiere asignar el glifo a un valor en una codificación particular.

Nota: Estoy omitiendo la redacción exacta del estándar w.r.t wchar_t, juegos de caracteres extendidos, etc. por brevedad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top