Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将实体转换为带欧元符号的拉丁语_Php_Character Encoding_Special Characters - Fatal编程技术网

PHP将实体转换为带欧元符号的拉丁语

PHP将实体转换为带欧元符号的拉丁语,php,character-encoding,special-characters,Php,Character Encoding,Special Characters,我有一个将UTF8转换为htmlentities的脚本。欧元符号的结果是和#8364。我正在尝试将其转换回拉丁语(ISO-8859-15),我相信其中有欧元符号 当我尝试 html_entity_decode('&#8364', ENT_QUOTES, 'ISO-8859-15'); 它不会将其转换为 欧元 我该怎么做?(最终输出将是一个windows txt文件。) 编辑**我更改了输入字符串以使其更加明显,因为有些人在第二句中没有注意到这一点。根据,您是对的:ISO-8859-15

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

当我尝试

html_entity_decode('&#8364', ENT_QUOTES, 'ISO-8859-15');
它不会将其转换为

欧元

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

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

根据,您是对的:ISO-8859-15确实支持欧元符号字符

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

您将需要一行类似这样的代码

ini_set( 'default_charset', 'ISO-8859-15' );
还是这个

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

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

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

在那里,欧元符号变成了
\x88
,而拉丁语-9/ISO-8859-15应该是
\xA4

。PHP 5.3转换成
&欧元到0xA4。但是你为什么不选择UTF-8呢?Windows假定字符集CP1251在不同的代码点上有欧元符号。在这里也可以使用:
$php-r“echo-ord(html_entity_decode('&Euro;',entu QUOTES,'ISO-8859-15');“164
我使用的是数字字符符号€表示欧元,而不是欧元;这对你有用吗?我好像没法让它工作。