我真的想表明什么能给我带来什么,但它并没有给予我和欧元;对于欧元。
我正在尝试
echo htmlentities(htmlentities("LISBOA-VIENA DESDE 99€ TAXAS INCLUÍDAS, RESERVE JÁ",ENT_COMPAT,ISO-8859-1),ENT_COMPAT,ISO-8859-1);
echo '<br>';
echo htmlentities(htmlentities("LISBOA-VIENA DESDE 99€ TAXAS INCLUÍDAS, RESERVE JÁ",ENT_COMPAT,UTF-8),ENT_COMPAT,UTF-8);
我得到了
LISBOA-VIENA DESDE 99€TAXAS INCLU&amp; Iacute; DAS,RESERVE J&amp; Aacute;
LISBOA-VIENA DESDE 99€TAXAS INCLU&amp; Iacute; DAS,RESERVE J&amp; Aacute;
我从未得到过&amp;欧元;
任何人都知道如何做到这一点?
答案 0 :(得分:8)
使用这些语句的文件的原始文件编码是什么?
如果您使用的是Windows,那么该文件很可能会使用Windows-1252(CP1252)进行编码,而不是ISO-8859-1,ISO-8859-2或UTF-8。
Windows-1252中的€
符号为0x80
,ISO-8859-15用€
编码0xA4
符号,而ISO-8859-1则没有一个€
符号(来自Aron Rotteveel的see answer)。
您必须确保将用于字符串的正确字符集传递给htmlentities()
。最佳做法是对所有文件使用UTF-8编码。
如果htmlentities("LISBOA-VIENA DESDE 99€ TAXAS INCLUÍDAS, RESERVE JÁ",ENT_COMPAT,'Windows-1252')
有效,那么您正在使用CP1252字符集。
我还注意到您在上面示例中的字符集周围缺少引号。这也可能是麻烦的原因。
答案 1 :(得分:6)
使用ISO-8859-15
代替ISO-8859-1
。
ISO-8859-15 (ISO Latin 9)
与ISO-8859-1 (ISO Latin 1)
不同,并在Latin-1 (ISO-8859-1)
中添加了欧元符号以及法语和芬兰语字母。
echo htmlentities('Working htmlentities() now 99€ off!', ENT_COMPAT, 'ISO-8859-15');
应该返回
Working htmlentities() now 99€ off!
答案 2 :(得分:1)
讨论here;似乎€(€
)经常有用。