编码问题和PHP

时间:2014-06-08 14:01:57

标签: php curl encoding

我使用PHP CURL来获取页面。 我将数据发布到页面,当我输出响应时,我会得到一堆像这样的字符:

‹˙˙”MkÂ@E÷ţŠ

我意识到这是一个编码问题。

在php.ini中将默认字符集设置为UTF-8后输出不同但仍然不可读:

�����Mk�@E

当我进入页面并手动提交表单页面在浏览器中显示正常时,但是当我使用CURL输出PHP以进行发布和输出响应时,它是不可读的。 我该如何解决这个问题,如何设置编码以及在哪里?

2 个答案:

答案 0 :(得分:1)

我正在使用CE字符,之前我遇到过非常类似的问题:它只是将我的所有页面utf-8作为页面编码无处不在,但是你还需要检查所有文件 - php,js,css等等 - 实际上也是用utf-8进行物理编码的。

为此,我使用了很棒的Notepad ++,只是去ENCODING - >转换为utf-8

Notepad ++有时候不知道你在utf-8中保存了你的文件,并认为它是例如ANSI:如果你没有注意到并保存它,你的问题可能会再次重复,所以我在某处学到了这个不错的小技巧:使用转换为utf-8"在Notepad ++中只需将它放在文件的顶部(我用这个用于php所以我显示php示例):

<?php //Útf-8 ľščťžýáíéúäôň
# YOUR SCRIPT HERE
?>

通过这种方式,它将始终被识别为UTF-8编码文件(没有这个我不时会检测到我的文件为utf-8,因为它们被编码了!)

希望这对那些做得很好(网页编码为UTF-8)并且仍然有这些奇怪的角色问题的人有所帮助

答案 1 :(得分:0)

确保您到处使用UTF8

php ** header()**

<?php header("Content-type: text/html; charset=utf-8"); ?>

html meta代码

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

您可以使用iconv()

将输入编码转换为utf-8

例如

$data = iconv("Windows-1252","UTF-8",$data);

您可以使用mb_detect_encoding()

找到所接收文字的编码