现场未显示欧元符号

Posted

技术标签:

【中文标题】现场未显示欧元符号【英文标题】:Euro sign not showing on site 【发布时间】:2011-10-12 05:46:42 【问题描述】:

我的一个字段(这是一个 latin1_swedish_ci)似乎在字段内部的 phpMYADMIN 中显示欧元符号很好。

但是,当我尝试以表单的形式在网站的输入字段中回显它时,它在 Firefox 中显示为问号。

这里是 html/php:

$sql = mysql_query("select * from `settings`");

while ($row = mysql_fetch_assoc($sql))
    $setting[$row['field']] = htmlspecialchars($row['value'], ENT_QUOTES);

<input type="text" name="currency_symbol" id="currency_symbol" size="50" value="<?php echo $setting['currency_symbol']; ?>" />

我在页面上使用以下元标记:

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

我已尝试将 utf8_general_ci 用于该字段,但得到相同的结果。

【问题讨论】:

【参考方案1】:

如果您以 UTF-8 格式提供页面,则需要确保在将字符串放入页面之前以 UTF-8 编码从数据库中获取字符串。你可以这样做:

mysql_set_charset('utf8');

(如果您这样做,也可以将实际表数据存储为 UTF-8,例如 utf8_general_ci,而不是 latin1_swedish_ci,因此您可以正确处理基本拉丁语之外的字符-1 套。)

【讨论】:

这在我的情况下有效,而 htmlentities() 和 htmlspecialchars() 没有 这应该可以解决实际问题,并且比避免使用 htmlentities() 的问题要好。【参考方案2】:

尝试将 MySQL charset 更改为 UTF-8 或瑞典语。

Here这是一个小例子。

【讨论】:

【参考方案3】:

尝试使用htmlentities() 而不是htmlspecialchars()

特殊字符不会转换所有内容,只是一些选定的字符。欧元符号€,真的需要编码,&amp;euro;

【讨论】:

-1 当字符集支持时,欧元符号当然不需要转换为实体。事实上,在使用 Unicode 时,您几乎不需要 htmlentities 而不是 htmlspecialchars @Michael Madsen:取决于您是否为文档正确设置了语言和字符代码。 Firefox 确实倾向于显示问号,特别是对于动态插入的内容,除非实体编码。 @Michael Madsen:此外,很少有人从 PHP 输出为 Unicode,所以这样的东西会被破坏。 PHP 仍然不能自动处理,所以在实践中很少这样做。 如果您没有正确设置这些东西,那么您的流程就会被破坏,并且 htmlentities 是围绕实际问题的丑陋黑客 - 即您没有正确设置这些东西。我已经使用 UTF-8 和 PHP 多年了,而且没有一次需要 htmlentities。 @Michael Madsen:取决于您要遵守的标准,如果您仍然使用 HTML4,那么这是正确的程序。 XHTML 向上,实体是一种高度兼容的处理情况的方式,一些阅读器,如文本阅读器,有时仍然会弄乱 UTF8。不争论这是一种明智的方法,只是说旧方法没有“错误”。

以上是关于现场未显示欧元符号的主要内容,如果未能解决你的问题,请参考以下文章

FineReport在页面上不能显示欧元符号

欧元符号 HTML

如何解析带有欧元货币符号的数字字符串? [复制]

利用CurrentCulture将人民币符号更改为欧元符号

如何正确获取 PHP 和 MySQL 中的欧元符号

如何在文本框中插入符号(英镑、欧元、版权)