【发布时间】:2013-04-06 21:04:43
【问题描述】:
像 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 -%-10s -%20s %8.2f
使用:php-5.3.23-nts-Win32-VC9-x86
【问题讨论】:
-
这个问题(不同的字符由不同的字节数组成,不同的字素簇由不同的字符数组成)有点类似于(但不一样)@ 987654321@。最重要的是,将数据放在 HTML 表格中可能是最简单的方法。
-
是的,这绝对不是重复的,这个问题是关于多字节字符的 sprintf(),另一个是关于字体显示宽度的问题。
-
这根本不是一个重复的问题...您可以这样做: utf8_encode(sprintf('format', utf8_decode($yourstring));... 当然你会如果给出了很多参数,则必须检查每个参数。
-
这个问题是关于 unicode 代码点高于 127 的字符,当使用 UTF-8 编码时使用超过一个字节。不幸的是
sprintf和printf不处理这个问题。当打印使用 UTF-8 编码时使用 6 个字节的 2 字符串时,%8s打印错误的空格数 (8-6=2) 而不是 (8-2=6)。这 NOTHING 与所使用的字体有关,就像这个问题应该重复的问题一样。这个问题是关于 phps 缺乏对多字节字符的支持。
标签: php utf-8 printf multibyte-functions