【问题标题】:PHP echos odd characters ("“helloâ€") on OS X installationPHP 在 OS X 安装中回显奇怪的字符(““你好”)
【发布时间】:2014-09-13 05:30:46
【问题描述】:

这是我第一次在 php 上使用 MAC,之前我一直使用 ubuntu 机器进行 PHP。

我已成功安装 MAMP。现在我在 htdocs

中有一个文件(index.php
<?php

   echo “hello”;

它在 safari 上的输出是:

“helloâ€

我尝试了几种不同的文本,它们都在浏览器上产生了荒谬的输出。

mac、safari 或 MAMP 中的问题在哪里?

更新:

不带大引号的输出是‘hello’

【问题讨论】:

  • 您是否将字符集设置为 utf-8? header('Content-Type: text/html; charset=utf-8');
  • 厄运的弯引号?

标签: php macos echo mamp virtualhost


【解决方案1】:

不要使用 等特殊引号,而是使用"'。确保在编写代码时使用简单的文本编辑器,而不是像 Word 这样的工具,它将简单的引号字符替换为更花哨的字符。

PHP 不理解花哨的引号,因此不会用 "' 替换它们,它们在语言中具有特殊含义。

那么,为什么它没有崩溃? PHP 的宽容度令人难以置信,它有优点也有缺点。考虑以下代码,它使用一个常量:

define('HELLO', 'Hello world!');
echo HELLO;

这有效,将输出“Hello world!”

现在,如果我们将一个看起来像常量的东西传递给 PHP,但没有定义它,PHP 只会输出(不存在的)常量的名称:

echo HELLOWORLD;

这将输出“HELLOWORLD”。

文本位“hello” 也会发生同样的情况——它尝试查找具有该名称的常量,但没有找到,因此只输出“hello”。这只会输出一个 E_NOTICE 错误,默认情况下可能会被禁用。建议在开发过程中输出all错误,避免出现这样的错误:

error_reporting(E_ALL);
echo “hello”;

这将输出:

注意:未定义常量“hello”的使用 - 假定为“hello”

事实上,如果我们试图在这些特殊引号之间添加一个空格,它会失败,因为常量的名称中不能有空格,因此根本无法解释文本:

echo “hello world”;

解析错误:语法错误,意外的 'world' (T_STRING),需要 ',' 或 ';'

至于为什么像 这样的特殊引号没有正确显示,这是因为编码问题。 的 ASCII 值高于 127,因此可以根据编码以不同的方式进行解释。您的文件以某种编码保存,但您的服务器和浏览器可能会认为它是另一种编码,从而产生错误字符。

【讨论】:

  • 是的,phpinfo() 有很多信息。我确实已经很好地安装了 php。
  • @pcGhost 感谢您的信息。我更新了我的帖子,解释了这一现象。
【解决方案2】:

您必须将您的文档设置为 utf-8 编码。

方法一:在页面中添加以下html代码

<meta charset="utf-8" />

方法2:使用如下php代码

<?
header("Content-Type: text/html;charset=utf-8");  
echo “hello”;   
?>

header 必须在代码的第一行。

它将输出“hello”;如果你想输出hello,请将你的双引号改为'hello'"hello"。因为你当前的双引号不是英文的。

【讨论】:

  • 工作。如果您只是编辑它,请告诉为什么它在 mac 上以这种方式工作而在 ubuntu 等上没有它?
  • @pcGhost 我刚刚升级了我的答案。
【解决方案3】:

你可以用引号',双引号"

您的双引号应该是 " 而不是

【讨论】:

    【解决方案4】:

    您的编码问题必须解决UTF-8 (utf8_encode)

    string utf8_encode ( string $data )
    

    请注意,如果无法正常工作,则意味着您的 PC 或浏览器有问题,然后转到控制面板中的 Langs.. 希望听到你的回答...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-04
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多