为什么我的 PHP 变量显示为难以理解,字符序列为 % 而不是中文的实际值?



我正在尝试使用这个embedPHP包(https://github.com/oscarotero/Embed/)。但是,当我尝试使用具有亚洲语言(如 URL https://zh.wikipedia.org/wiki/亞馬遜公司)的所有页面的变量$info->title显示Title显示时,这会将我%E4%BA%9E%E9%A6%AC%E9%81%9C%E5%85%AC%E5%8F%B8title而不是作为真正的标题亞馬遜公司

为什么显示一个难以理解的字符,例如:%E4%BA%9E%E9%A6%AC%E9%81%9C%E5%85%AC%E5%8F%B8而不是亞馬遜公司

? ??那么如何让我的$info->title变量按原样显示:亞馬遜公司???

谢谢你,请帮助我。

您可以解码字符串。也许图书馆没有。

$title = '%E4%BA%9E%E9%A6%AC%E9%81%9C%E5%85%AC%E5%8F%B8';
var_dump(rawurldecode($title));

将打印

string(15) "亞馬遜公司"

您应该在文件中的任何输出之前包含这样的标头:<?php header('Content-type: text/html; charset=UTF-8'); ?>.

此外,如果要从数据库获取数据,则需要确保将其编码并从数据库中检索为 UTF8。

如果要输出 HTML,则需要在<head>中包含嵌套的以下元素:<meta charset="utf-8" />.您可能还希望使用<html>元素上的lang属性声明语言。

您向我们展示的 zh.wikipedia URL 是 URL 编码的。要在页面上显示它,您必须对其进行 URL 解码,然后在回显它或以其他方式将其发送到浏览器之前对其进行 HTML 编码。

$displayableTitle = htmlentities( 
urldecode( '%E4%BA%9E%E9%A6%AC%E9%81%9C%E5%85%AC%E5%8F%B8' ) );