2013-04-14 4 views
17

sprintf와 같은 이음새는 foregin 문자에 문제가 있습니까? 아니면 내가 뭔가 잘못하고 있는거야? 그래도 문자열에서 åäö 같은 문자를 제거하면 작동하는 것 같습니다. 그게 필요한가요?php sprintf()에 외국 문자가 있습니까?

2011-11-27 A1823 -Ref. Leif -   12 873,00 18.98 
2011-11-30 A1856 -Rättat xx -   6 594,00 19.18 

내가의 sprintf()이 등을 사용하고 있습니다 :

나는 다음과 같은 라인이 보고서에 대해 올바르게 정렬 할 % -12s % -8s - % - 10 초 - % 20 % 8.2 F

사용 : PHP-5.3.23-NTS-는 Win32-VC9-86 PHP에서

+0

이 문제를 (다른 문자 바이트 다른 그래 핀 클러스터의 다른 번호로 구성 문자의 서로 다른 숫자로 구성되어 있음)입니다 * 약간 * (하지만 동일하지 않음) HTTP 유사합니다 : //stackoverflow.com/questions/9166698/aligning-based-on-the-width-of-letters-with-sprintf. 결론은 데이터를 HTML 테이블에 저장하는 것이 가장 쉽다는 것입니다. – PleaseStand

+1

그래, 이건 분명히 중복되지 않습니다,이 질문에 대한 멀티 바이트 문자는 sprintf(), 다른 하나는 글꼴 표시 너비에 관한 것입니다. – xyphoid

+3

이것은 전혀 중복 된 질문이 아니 었습니다. utf8_encode (sprintf ('format', utf8_decode ($ yourstring)); ... 물론 많은 경우 모든 인수를 확인해야합니다. –

답변

8

문자열된다 기본적으로 바이트 (없는 자)의 배열을. 멀티 바이트 인코딩 (UTF-8 등)에서는 기본적으로 작동하지 않습니다. 자세한 내용은

볼 : PHP에서
https://secure.php.net/manual/en/language.types.string.php#language.types.string.details

대부분의 문자열 함수합니다 (mb_ 접두어)하지만 멀티 바이트 상당 있습니다. 그러나 sprintf은 그렇지 않습니다.

ftp.net의 함수 설명서 페이지에 sprintf의 멀티 바이트 구현이 포함 된 사용자 의견 ("webcaster at cafe-clope dot net")이 있습니다. 그것은 당신을 위해 작동 할 수 있습니다
https://secure.php.net/manual/en/function.sprintf.php#55837