number - php sprintf() con caracteres extranjeros?
sprintf php mysql (2)
¿Las costuras para ser como sprintf tienen un problema con los caracteres iniciales? ¿O soy yo haciendo algo mal? Aunque parece que funciona cuando se eliminan caracteres como åäö de la cadena. ¿Debería ser necesario?
Quiero que las siguientes líneas se alineen correctamente para un informe:
2011-11-27 A1823 -Ref. Leif - 12 873,00 18.98
2011-11-30 A1856 -Rättat xx - 6 594,00 19.18
Estoy usando sprintf () así: % -12s% -8s -% - 10s -% 20s% 8.2f
Utilizando: php-5.3.23-nts-Win32-VC9-x86
Las cadenas en PHP son básicamente matrices de bytes (no caracteres). No pueden trabajar de forma nativa con codificaciones multibyte (como UTF-8).
Para más detalles ver:
https://secure.php.net/manual/en/language.types.string.php#language.types.string.details
Sin embargo, la mayoría de las funciones de cadena en PHP tienen equivalentes multibyte (con el prefijo mb_
). Pero el sprintf
no lo hace.
Hay un comentario del usuario (por "webmaster en cafe-clope dot net") con implementación multibyte del sprintf
en la página de documentación de la función en php.net. Puede funcionar para usted:
https://secure.php.net/manual/en/function.sprintf.php#55837
Si está utilizando caracteres que se ajustan al conjunto de caracteres ISO-8859-1, puede convertir las cadenas antes del formateo y volver a convertir el resultado a UTF8 cuando haya terminado.
utf8_encode(sprintf("%-12s %-8s", utf8_decode($paramOne), utf8_decode($paramTwo))