为什么在使用Zend_Currency打印GBP符号时,我得到一个重音A?

时间:2009-06-13 15:17:45

标签: php zend-framework currency

我有一个奇怪的问题,我似乎无法确定原因。

当我使用Zend_Currency将值格式化为GBP时,我会在£符号前面得到重音A.如果要求它返回任何其他货币,如美元,重音A消失。

生成此代码的代码是:

$currency = new Zend_Currency('en_GB');
$amount = $currency->toCurrency($value);

显示

£ 500.00

如果我设置为en_US,我会

$ 500.00

为什么会出现这种情况的想法?

...谢谢

5 个答案:

答案 0 :(得分:3)

'有趣'字符通常是编码/显示问题。确保将脚本设置为输出为UTF8 - 检查HTML / Xml标头/内容类型。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

答案 1 :(得分:1)

检查编码时,还需要使HTTP标头匹配。如果您的服务器将页面作为ISO8891发送并且您的HTML自我指定为UTF8,则在某些浏览器中可能会出现问题,选择不正确的编码。

在php中,您可以使用header()内置函数将http标头发送到客户端。例如;

header('Content-Type: text/html; charset=utf-8'); 

答案 2 :(得分:0)

检查页面的字符编码。

答案 3 :(得分:0)

它正在为井号输出一个双字节字符,浏览器没有看到它 - 它将它视为两个单字节字符。

检查您的脚本和网页的其余部分是否同意正在使用的代码页。例如,如果Zend_currency函数假定(或者已被告知)UTF8,那么你需要在页面中使用类似的东西:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

答案 4 :(得分:0)

我刚遇到这个问题,因为上面提到的编码问题。我能够使用以下代码段来解决它

html_entity_decode("&#xA3;", ENT_COMPAT, 'ISO-8859-1');

blog post详细讨论了它。