在编码中获得“你会”而不是“你是”吗?

时间:2012-08-10 08:33:39

标签: php encoding

我使用PHP Simple DOM来获取URL。当我将网址内容打印到屏幕上时,我得到:

you’ll

而不是:

you'll

如果我跑

$str = utf8_decode('you’ll');
echo $str;

我明白了:

you?ll

我显然不了解编码的基础知识。你能告诉我我缺少什么吗?

2 个答案:

答案 0 :(得分:3)

尝试在执行任何操作之前将编码设置为UTF-8。 用这个开始你的php文件:

<?php
   header('Content-Type: text/html; charset=UTF-8');
   mb_internal_encoding('UTF-8');
?>

并尝试在不使用utf8_decode的情况下回显/打印它。

注意: 如果你正在使用mysql(postgesql),也可以使用它:

<?php 
   mysql_query("SET CHARACTER SET UTF8");
   mysql_query("SET NAMES UTF8");
?>

编辑:另外,请确保以UTF-8(无BOM)格式保存PHP文件。

答案 1 :(得分:0)

您需要将输出的文档声明为UTF-8(假设它实际上 UTF-8),以便浏览器知道会发生什么。你可以转换编码,但如果你所做的只是在浏览器中显示它,最好保留原样。

在输出任何内容之前将此行添加到PHP:

header('Content-Type: text/html; charset=utf-8');

...并将此元标记添加为{strong> <head>的第一个子元素:

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