Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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 显示mysql数据库中的阿拉伯文数据_Php_Mysql_Sql_Database_Mysqli - Fatal编程技术网

Php 显示mysql数据库中的阿拉伯文数据

Php 显示mysql数据库中的阿拉伯文数据,php,mysql,sql,database,mysqli,Php,Mysql,Sql,Database,Mysqli,首先,我的这段代码是一段伪代码,它是用sql编写的,只是为了理解。因此,请耐心等待,因为我稍后会将其更改为mysqli 我有一些阿拉伯语文本需要存储在数据库中,然后显示在用户端 为了将其存储在数据库中,我将排序规则更改为utf8_general_ci,并在连接文件i.e config.php中使用以下代码 <?php $link = mysql_connect('abc','abc','abc') or die('Cannot connect to the DB'); mysql_sele

首先,我的这段代码是一段伪代码,它是用sql编写的,只是为了理解。因此,请耐心等待,因为我稍后会将其更改为mysqli

我有一些阿拉伯语文本需要存储在数据库中,然后显示在用户端

为了将其存储在数据库中,我将排序规则更改为utf8_general_ci,并在连接文件i.e config.php中使用以下代码

<?php
$link = mysql_connect('abc','abc','abc') or die('Cannot connect to the DB');
mysql_select_db('abc',$link) or die('Cannot select the DB');
mysql_set_charset("UTF8", $link);
mysql_query("set character_set 'utf8'");
?>
在它的帮助下,我能够以阿拉伯语的形式存储数据,但现在在我的php文件中,应该显示数据,我得到的字母数字数据如下:u062du0631u0641u0629n。我的php文件的示例代码是

<?php
require_once('config.php');
$vendorid = $_REQUEST['vendorid'];

        $select = mysql_query("select * from vendor where id = '".$vendorid."'");   

$posts = array();
    if(mysql_num_rows($select)) {
        while($post = mysql_fetch_assoc($select)) {
            $posts[] = $post;
        }
        header('Content-type: application/json');
        echo stripslashes(json_encode(array('vendor list'=>$posts)));
    } else {
    header('Content-type: application/json');
        echo stripslashes(json_encode(array('vendor list'=>'No vendor available')));
    }
?>

您可以使用此代码查看utf8字符和字符串

mysql_set_charset('utf8',$link);
使用mysqli_*API而不是mysql_*API。后者不受欢迎。 更改为$mysqli_obj->set_charset'utf8'而不是set name。 我想u062d是‘哈’?除了使用Unicode代码,您没有其他方法键入阿拉伯语吗?在某些上下文中,Windows允许您执行Alt+062D。 通常,html页面的开头带有合适的字符,允许输入任何utf8字符,包括阿拉伯语。 我认为在使用它的上下文中不需要斜杠。或者数据库中是否有额外的斜杠?这将是一个问题。 我在您的代码中没有看到任何生成“u062d”的内容。 请选择HEXcol,col FROM。。。选择具有这些Unicode字符串之一的行;这可能会给我们更多的线索。 兄弟试一试


请在执行查询之前尝试以下操作:

mysql_query("SET character_set_results = 'utf8'");
mysql_query("character_set_client = 'utf8'");
mysql_query("character_set_connection = 'utf8'");
mysql_query("character_set_database = 'utf8'");

我在配置文件中添加了ur链接,但仍然得到相同的结果062D只是一个随机的字母数字数据,我在数据库中有阿拉伯数据的地方得到随机的字母数字数据。我已将阿拉伯语数据存储在数据库中,并在那里正确显示,但不在前端U062DU0631U0641U0629不是非常随机的-它是4个阿拉伯语字符的Unicode表示形式。前端是否显示了这20个字符,而它应该显示4个阿拉伯字符?如果是这样,我们需要1找出为什么有人存储这些代码,和/或2找出如何将其转换回阿拉伯语。在MySQL术语中,062D06310629需要被视为ucs2字符的十六进制,然后转换为utf8作为十六进制D8ADD8B1D981D8A9。将062D06310629转换为D8ADD8B1D981D8A9并不容易。但首先要去掉“u”字要困难得多。你们有精通正则表达式的程序员吗?我认为s/u[0-9a-fA-F]{4,4}/&x$1/可能是将u062d转换为&x062d的基础,这将是hah的html实体,从而“正确”地显示在屏幕上。我完全不知道这一点。。有些名字是阿拉伯语的,因为它在应用程序中使用,所以我需要设置一个工具,人们可以用阿拉伯语风格添加和查看他们的数据。我又使用了两个命令。mysql\u客户端\u编码$link;printfMySQL服务器版本:%s\n,mysql\u获取\u服务器\u信息;它显示我使用的是utf8 MySQL服务器版本:5.1.72-rel14.10,所以我对ucs2有点困惑。正如你所说,我需要把它转换回来,你能告诉我怎么做吗?恐怕我没有人来完成这项任务,你能建议其他方法来存储和检索数据库中的阿拉伯语数据吗