1

如果这是相关的(很可能是),它们就是 PHP 源代码文件。

4

4 回答 4

7

有几个陷阱需要注意:

  1. PHP 不知道某些编辑器或 IDE 喜欢放在 UTF-8 文件开头的 BOM 字符。该字符表示该文件是 UTF-8,但不是必需的,它是不可见的。这可能会导致处理 HTTP 标头的函数发出“标头已发送”警告,因为 PHP 会在看到 BOM 时将 BOM 输出到浏览器,这将阻止您发送任何标头。确保您的文本编辑器具有UTF-8(无 BOM)编码;如果您不确定,只需进行测试即可。如果<?php header('Content-Type: text/html') ?>在其他空文件的开头没有触发警告,那你很好。
  2. 默认字符串函数不支持多字节编码。这意味着strlen真正返回字符串中的字节数,而不是实际的字符数。在您开始使用以下函数拼接非 ASCII 字符的字符串之前,这并不是什么大问题substr:当您这样做时,传递给它的索引指的是字节索引而不是字符索引,这可能会导致您的脚本中断非-ASCII 字符一分为二。例如,echo substr("é", 0, 1)将返回一个无效的 UTF-8 字符,因为在 UTF-8 中,é实际上需要两个字节,而 substr 将只返回第一个。(解决方案是使用知道多字节编码的mb_字符串函数。)
  3. 您必须确保您的数据源(如外部文本文件或数据库)也返回 UTF-8 字符串,因为 PHP 不会进行自动转换。为此,您可以使用特定于实现的方法(例如,MySQL 有一个特殊的查询,可让您指定期望结果的编码:SET CHARACTER SET UTF8或类似的东西),或者如果您找不到更好的方法,mb_convert_encodingiconv将一个字符串转换为另一种编码。
于 2011-04-05T14:03:49.010 回答
1

实际上,通常建议您将所有源代码保存为 UTF8。带有拉丁字符的常规代码的大小根本不重要,但可以防止任何特殊字符出现故障。

于 2011-04-05T14:03:24.470 回答
0

如果您在例如字符串值中使用任何特殊字符,则大小会稍大一些,但这无关紧要。

不过我的建议是,始终保留默认格式。我花了这么多时间,因为格式保存出错并且所有字符都更改了。

从少数技术角度来看,没有区别!

于 2011-04-05T13:55:58.617 回答
-1

非常相关的是,PHP 解析器可能会开始输出虚假字符,例如时髦的颠倒问号。只要坚持规范,更可取。

于 2011-04-05T14:02:07.450 回答