JackShcherbakov
@JackShcherbakov

Почему printf доводит строку до разной длины нулями в зависимости от языка на котором написана строка?

Код 1:
<?php 
mb_internal_encoding("utf-8");
printf('Итого: %0-10s', "фвв");
?>

Ожидание:
Итого: фвв0000000 (10 символов!)
Реальность:
Итого: фвв0000 (на самом деле тут должно быть 10 символов!)

Код 2:
<?php 
mb_internal_encoding("utf-8");
printf('Итого: %0-10s', "ava"); //АНГЛИЙСКИЕ БУКВЫ
?>

Ожидание:
Итого: ava0000000 (10 символов!)
Реальность:
Итого: ava0000000 (10 символов! Как и должно быть!)

Почему так? Как исправить?
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Варнинг в мануале для чего дан? php.net/manual/en/function.sprintf.php
Warning Attempting to use a combination of the string and width specifiers with character sets that require more than one byte per character may result in unexpected results


Потому что указание длины строки в printf работает в байтах, а не символах.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы