【问题标题】:PHP convert htmentities to latin with euro signPHP将htmentities转换为带有欧元符号的拉丁文
【发布时间】:2011-03-07 16:10:38
【问题描述】:

我有一个将 UTF8 转换为 htmlentities 的脚本。欧元符号的结果是&#8364。我正在尝试将其转换回拉丁语 (ISO-8859-15),我认为其中包含欧元符号。

当我尝试时

html_entity_decode('&#8364', ENT_QUOTES, 'ISO-8859-15');

它不会将其转换为

我该怎么做? (最终输出将是一个 windows txt 文件。)

编辑 ** 我更改了输入字符串以使其更明显,因为有些人在第二句中没有注意到这一点。

【问题讨论】:

  • 为我工作。 PHP 5.3 将€ 转换为 0xA4。但是你为什么不使用 UTF-8 呢?并且 Windows 假定字符集 "CP1251" 在不同的代码点具有欧元符号。
  • 在这里也可以工作:$ php -r "echo ord(html_entity_decode('€', ENT_QUOTES, 'ISO-8859-15'));" 164
  • 我使用数字字符符号 € 表示欧元,而不是 €这对你有用吗?我似乎无法让它工作。

标签: php character-encoding special-characters


【解决方案1】:

Windows 不遵循 ISO 字符集,它使用较旧的编码:

html_entity_decode($string, ENT_QUOTES, 'CP1251');

欧元符号在此处变为 \x88,而 Latin-9/ISO-8859-15 将变为 \xA4

【讨论】:

    【解决方案2】:

    根据this page,您是对的:ISO-8859-15 确实支持 EURO SIGN 字符。

    当你说“它不会转换它”时,你确定它不会吗?因为正确编码字符只是工作的一半 - 您必须通知客户端应用程序(即浏览器)对数据进行编码的编码,以便它可以正确地将字节解码字符.

    你需要一行看起来像这样的代码

    ini_set( 'default_charset', 'ISO-8859-15' );
    

    或者这个

    header( 'Content-Type: text/html; charset=ISO-8859-15' );
    

    【讨论】:

      猜你喜欢
      • 2014-11-11
      • 1970-01-01
      • 2013-10-26
      • 2017-02-10
      • 2012-08-11
      • 2015-03-27
      • 2011-01-01
      • 1970-01-01
      • 2014-06-28
      相关资源
      最近更新 更多