【发布时间】:2018-10-31 15:14:17
【问题描述】:
我在运行 Windows 10 Home Single Language 64 位操作系统的笔记本电脑上使用 PHP 7.2.11。
我使用最新版本的 XAMPP 安装了 Apache/2.4.35 (Win32) 和 PHP 7.2.10。
我在一个名为 demo.php 的文件中输入了以下代码:
<?php
$string1 = "Hel\xE1lo"; //Tried hexadecimal equivalent code-point from ISO-8859-1
echo $string1;
?>
在我的网络浏览器中运行上面的程序后,它给了我以下输出:
Hel�lo
然后,我对上面的程序做了一个小改动,重新编写了如下代码:
<?php
$string1 = "Hel\xC3\xA1lo"; //Tried hexadecimal equivalent code-point from UTF-8, C form
echo $string1;
?>
在对我的网络浏览器进行一些更改后运行相同的程序后,它给了我以下输出(确实是预期的结果):
Helálo
所以,看了这些东西后,我想到了一个疑问。
我想知道PHP中是否有任何内置函数或某种机制可以告诉我当前文件中使用了哪种字符编码标准?
附注: 我知道,在 PHP 中,字符串将以脚本文件中的任何编码方式进行编码。我想知道是否存在一些内置函数、某种机制或任何其他方式可以告诉我正在考虑的文件中使用的字符编码标准。
【问题讨论】:
-
大多数字符集检测只查看字面字节/字符编码,而忽略 C 字符串/十六进制转义。
-
@mario :你给我的两个问题的链接都没有回答我的疑问。我只是想要一个内置函数、某种机制或其他方式,它们将为我提供正在考虑的 PHP 文件中使用的字符编码标准。而已。不多也不少。即使上述 PHP 文件是空的,我也应该能够借助一些内置函数、某种机制或其他方式获得将在该文件中使用或设置的字符编码。谢谢。
-
更好的问题是,假设这样的内置不存在:这有什么关系?你不能强制文件编码是你的 IDE 的已知编码并假设吗?
-
@YvesLeBorg :实际上,这个问题已经在今天的 PHP 技术面试中被问到了,我听后惊呆了。我从没想过我会在任何一次面试中被问到这样的问题。所以,你必须非常清楚,在面试中,假设任何事情或假设任何事情都是无效的。面试官总是期望被面试者给出坚定、明确和自信的回答。所以,我正在为我的问题寻找一些好的、可靠的答案。我希望我能从我们 PHP 社区的某个人那里得到一个。
标签: php string character-encoding byte string-literals