Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中操作多语言数据?_Php - Fatal编程技术网

如何在PHP中操作多语言数据?

如何在PHP中操作多语言数据?,php,Php,我有一个项目,将接收任何可能的语言的数据。现在,我正试图解析wiki页面,并获取该页面,然后将其放入DB中。在解析步骤中,我发现大多数本机名称都以“”和其他奇怪的符号显示。定义的字符集是UTF-8 我不知道这是怎么回事,也不知道在哪里可以进一步挖掘。我在网站上找不到任何关于多语言内容的信息。我应该得到所有符号的代码来使用它们吗?如何做到这一点 我需要: 将英语、母语和短语的语言名称添加到db中 正确显示任何国家/地区的数据(编码内容) 人们将能够添加所选语言的数据,这些数据也将保存在数据库中,

我有一个项目,将接收任何可能的语言的数据。现在,我正试图解析wiki页面,并获取该页面,然后将其放入DB中。在解析步骤中,我发现大多数本机名称都以“”和其他奇怪的符号显示。定义的字符集是UTF-8

我不知道这是怎么回事,也不知道在哪里可以进一步挖掘。我在网站上找不到任何关于多语言内容的信息。我应该得到所有符号的代码来使用它们吗?如何做到这一点

我需要:

  • 将英语、母语和短语的语言名称添加到db中
  • 正确显示任何国家/地区的数据(编码内容)
  • 人们将能够添加所选语言的数据,这些数据也将保存在数据库中,并从前面描述的表中链接到语言名称
现在我在编码方面有一些问题,因此一些文本显示不正确,如下图所示。我已经拥有的是这里(这里只有一行来自wiki的表格):

header('Content-Type:text/html;charset=utf-8');
$html='1
аҧсуа бызшәа, аҧсшәа
abk
abk
abk
又称阿布哈兹
';
$dom=新的domDocument;
$dom->loadHTML($html);
$dom->preserveWhiteSpace=false;
$tables=$dom->getElementsByTagName('table');
$rows=$tables->item(0)->getElementsByTagName('tr');
foreach($行作为$行)
{
$cols=$row->getElementsByTagName('td');
echo$cols->item(2)->nodeValue.';
echo$cols->item(3)->nodeValue.';
echo$cols->item(4)->nodeValue.“
”; 回声“
”; }
输出如下所示:

但是,如果我尝试输出
$html
,它会正确地显示所有内容。我使用谷歌浏览器,最新版本。我需要一些关于如何工作的线索和提示,以及如何使我的东西正常工作


谢谢你的关注

将数据库、表和列
排序规则更改为
utf8mb4\u unicode\u 520\u ci
,同时请记住Max
UNIQUE
VARCHAR
长度为
191

据我所知,
PHPMyAdmin
将排序规则设置为默认的
latin1\u swedish\u ci

但不建议多语言网站使用此排序规则

UTF8
就是出于这个原因


另外,在名称
ci
的末尾,这里的意思是
不区分大小写

我认为DOMDocument组件不能正确使用非拉丁1字符集的字符

更改行
$dom->loadHTML($html)

$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
这应该会有所帮助


谢谢您的回复。但我在PHP方面有这个问题。当我将内容“回显”到html时,会出现方块。有没有办法让它在任何计算机上正确显示?将数据保存到数据库是我痛苦的下一步:)@Telion如果可能,请输入包含问题的代码,并使用什么浏览器预览代码,如果排序规则已设置为
UTF8
。这不是问题。给我一点时间。好的,就是这样。(实际上,我的PHPmyadmin进行默认排序
utf8\u general\u ci
,所以一切都默认工作)
$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));